目次:
このガイドでは、HTTPトラフィックをNginxのHTTPSにリダイレクトする方法を説明します。
Nginxは「engine x」と発音し、インターネット上の最大規模のサイトの負荷を処理する無料のオープンソースの高性能HTTPおよびリバースプロキシサーバーです。
要求と応答がプレーンテキストで送信および返されるHTTPとは異なり、HTTPSはTLS / SSLを使用してクライアントとサーバー間の通信を暗号化します。
HTTPSをHTTP経由で使用することには、次のような多くの利点があります。
- すべてのデータは双方向で暗号化されます。 その結果、傍受された場合、機密情報を読み取ることができなくなります。GoogleChromeや他のすべての一般的なブラウザは、あなたのウェブサイトを安全とマークします。
NginxでHTTPをHTTPSにリダイレクトする好ましい方法は、サイトのバージョンごとに個別のサーバーブロックを構成することです。 サーバーの予測できない動作を引き起こす可能性があるため、ifディレクティブを使用してトラフィックをリダイレクトしないでください。
サイトごとにHTTPをHTTPSにリダイレクトする
単一のWebサイトをHTTPSにリダイレクトするには、ドメイン構成ファイルを開き、次の変更を行います。
server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; }
コードを行ごとに分解してみましょう。
-
listen 80
サーバーブロックは、指定されたドメインのポート80で着信接続をリッスンします。server_name linuxize.com www.linuxize.com
サーバーブロックのドメイン名を指定します。 必ずドメイン名に置き換えてください。return 301
トラフィックをHTTPSバージョンのサイトにリダイレクトします。$request_uri
変数は、引数を含む完全な元のリクエストURIです。
通常、サイトのHTTPS wwwバージョンを非wwwにリダイレクトするか、その逆も行います。 リダイレクトの推奨される方法は、wwwバージョンとwww以外のバージョンの両方に個別のサーバーブロックを作成することです。
たとえば、HTTPS www要求をwww以外にリダイレクトするには、次の構成を使用します。
server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name www.linuxize.com; #… other code return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name linuxize.com; #… other code }
すべてのサイトをHTTPSにリダイレクトする
サーバーでホストされているすべてのWebサイトがHTTPSを使用するように構成されており、サイトごとに個別のHTTPサーバーブロックを作成したくない場合は、1つのキャッチオールHTTPサーバーブロックを作成できます。 このブロックは、すべてのHTTP要求を適切なHTTPSブロックにリダイレクトします。
サイトのHTTPSバージョンに訪問者をリダイレクトする単一のキャッチオールHTTPブロックを作成するには、Nginx構成ファイルを開き、次の変更を行います。
server { listen 80 default_server; listen:80 default_server; server_name _; return 301 https://$host$request_uri; }
コードを行ごとに分析してみましょう。
-
listen 80 default_server
このサーバーブロックを、一致しないすべてのドメインのデフォルト(キャッチオール)ブロックとして設定します。server_name _
-_
は、実際のドメイン名と決して一致しない無効なドメイン名です。return 301
トラフィックを、ステータスコード301(永続的に移動)で対応するHTTPSサーバーブロックにリダイレクトします。$host
変数は、リクエストのドメイン名を保持します。
たとえば、訪問者がブラウザで
http://example.com/page2
を開くと、Nginxはリクエストを
https://example.com/page2
リダイレクトし
https://example.com/page2
。
可能であれば、HTTPからHTTPSへのグローバルなリダイレクトではなく、ドメインごとにリダイレクトを作成することをお勧めします。
結論
WebサイトにSSL証明書をインストールしたら、HTTPトラフィックをHTTPSにリダイレクトする必要があります。
Nginxでは、HTTPをHTTPSにリダイレクトする好ましい方法は、別個のサーバーブロックを作成し、301リダイレクトを実行することです。
nginx