Nginx
如何使用 nginx 設置 SSL 反向代理?
與我關於如何使用 nginx 設置反向代理的問題相關,我現在在設置一個還需要 SSL 連接的代理時遇到了困難。
我有 docker 容器,它為我的主機系統提供映射的 SSL 埠 4430。網路伺服器正在使用自簽名證書。
在我的
/etc/hosts
文件中,我定義了:127.0.0.1 app.local
我的 nginx 伺服器配置如下所示:
server { listen 80; server_name app.local; location / { return https://$host$request_uri; } } server { listen 443; server_name app.local; location / { proxy_pass https://127.0.0.1:4430; } }
當我使用它訪問我的網路應用程序時,
https://127.0.0.1::4430
它工作正常。我第一次收到關於證書的警告,然後我必須允許。然而,當通過
http://app.local
或連接到它時https://app.local
,我的瀏覽器顯示:SSL connection error ERR_SSL_PROTOCOL_ERROR
我也期待證書警告出現,然後我可以允許。
將 SSL 與 nginx 一起使用時如何使反向代理正常工作?
在 nginx 上終止 SSL:
a)伺服器部分需要指定埠和’ssl'
listen 192.168.2.26:443 ssl;
b)伺服器塊然後還指定證書和 ssl 參數
ssl_certificate new-cert.cer; ssl_certificate_key new-cert.key; ssl_protocols SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5;
我想你已經很接近了(我自己是 Nginx 的新手),但是你的第二個伺服器塊需要更多……我的伺服器上有一個:
listen 443 ssl; listen [::]:443 ipv6only=on ssl; charset utf-8; client_max_body_size 75M; server_name example.com www.example.com; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key;
請注意以下事項:
- listen 指令指定 ssl。
- 指定證書和證書密鑰。證書應該放在易於訪問的地方,因為它會發送給訪問您網站的每個人。密鑰位於只有需要它的使用者才能訪問的地方。
ipv6、charset 和 client max 正文是我在伺服器上的行,但對於您在這裡所做的事情並不需要。您可以將它們命名為任何名稱並將它們放置在任何地方,因此如果您將文件儲存在其他地方,請不要擔心確切的文件名或位置。這就是我喜歡的方式,我的
ls -l
輸出是:-rw-r--r-- 1 root root 1887 Oct 8 14:16 /etc/ssl/certs/example.com.crt -rw-r----- 1 root ssl-cert 1704 Oct 8 13:47 /etc/ssl/private/example.com.key