まとめ
注意事項: このドキュメントでは、Nginx の HTTPS の設定について詳しく説明します。サーバーが複数のポートでリッスンし、ドメイン名が 1 つだけある場合、HTTPS を使用してリクエストを送信するように複数のポート番号が設定されます。
説明する
まずはHTTPとHTTPSの違いについて話しましょう
HTTP (ハイパーテキスト転送プロトコル) と HTTPS (セキュア HTTP) は、クライアントとサーバー間のデータ転送に使用される 2 つの異なるプロトコルです。それらの主な違いはセキュリティです。以下の違いがあります。
-
セキュリティ: HTTP はクリア テキスト プロトコルであり、データは送信中にクリア テキストで送信されるため、簡単に盗聴され、改ざんされます。HTTPS は、TLS (Transport Layer Security) プロトコルを使用して通信を暗号化し、データ送信の機密性と完全性を保証します。HTTPS では、公開キー暗号化と秘密キー復号化を使用して、送信中のデータの安全性を高めます。
-
データ転送方法: HTTP は通信にデフォルトのポート 80 を使用し、HTTPS はデフォルトのポート 443 を使用します。HTTPS では暗号化と復号化のプロセスが必要となり、一定の計算負荷と伝送遅延が増加するため、HTTP のデータ伝送速度は通常 HTTPS のデータ伝送速度よりも高速です。
-
証明書の要件: Web サイトで HTTPS を使用するには、SSL/TLS 証明書を取得してインストールする必要があります。この証明書は、サーバーの身元を確認するために法的に認定された認証局 (CA) によって発行されたデジタル証明書です。HTTP では証明書を使用する必要はありません。
-
SEO (検索エンジン最適化): 検索エンジンは一般に、検索結果で上位にランクされる可能性が高い、安全な HTTPS Web サイトを好みます。したがって、HTTPS を使用すると、Web サイトの可視性と信頼性が向上します。
この時点で、比較的安全な HTTPS プロトコルを使用してリクエストを送信する必要がある理由がわかりました。安全は最優先でなければなりません
上記のSSL/TLS証明書は関係者による申請が必要ですが、私たちは申請された証明書を取得して作業するだけです。
SSL証明書を追加する
SSL 証明書を取得したら、nginx ディレクトリに移動して新しいフォルダー証明書 (mkdir cert) を作成し、関連する証明書をこのフォルダーにアップロードします。通常は 2 つあり、1 つは .key ファイル、もう 1 つは.pemです。ファイル。
nginx.confを構成する
1. コマンドで nginx の場所を見つけます。
whereis nginx
2. /nginx/conf ディレクトリに切り替えます
3. HTTPS プロトコルを使用するように nginx を構成する
ポート 443 をリッスンする必要がある場合は、次のように設定できます。追加されたサーバー設定はhttp{}の下にあります。
server {
listen 443 ssl;#必须加上ssl
server_name xxx.com.cn; #可以是域名,可以是ip
#charset koi8-r;
#access_log logs/host.access.log main;
root /var/www/html/test/web; # nginx的访问目录
index index.html index.htm; #首选文件
#设置文件上传大小
client_max_body_size 100m;
#配置ssl协议
ssl_certificate /usr/local/nginx/cert/xxx.pem; #ssl证书路径
ssl_certificate_key /usr/local/nginx/cert/xxx.key; #ssl证书路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$args; #配置伪静态
#proxy_pass http://127.0.0.1:8082;#动态转发
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/test/web;
}
}
https プロトコルを使用するようにこのドメイン名の複数のポートを監視するように設定する場合は、上記の設定に従ってその下にコピーをコピーし、ポート番号を変更します。個人テストは効果的です。例: 8081 8082 で聞いています
server {
listen 8081 ssl;
server_name xxx.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
root /var/www/html/test/web;
index index.html index.htm;
#设置文件上传大小
client_max_body_size 100m;
ssl_certificate /usr/local/nginx/cert/xxx.pem;
ssl_certificate_key /usr/local/nginx/cert/xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$args;
#proxy_pass http://127.0.0.1:8082;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/test/web;
}
}
server {
listen 8082 ssl;
server_name xxx.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
root /var/www/html/test/web;
index index.html index.htm;
#设置文件上传大小
client_max_body_size 100m;
ssl_certificate /usr/local/nginx/cert/xxx.pem;
ssl_certificate_key /usr/local/nginx/cert/xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$args;
#proxy_pass http://127.0.0.1:8082;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/test/web;
}
}