如何使用 nginx 設定 SSL 反向代理?

如何使用 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

我還期待出現證書警告,然後我可以允許。

在 nginx 中使用 SSL 時如何讓反向代理程式運作?

答案1

要終止 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;

答案2

我想你已經很接近了(我自己是 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;

請注意以下事項:

  1. Listen 指令指定 ssl。
  2. 指定證書和證書密鑰。該證書應該位於易於訪問的位置,因為它會發送給訪問您網站的每個人。密鑰位於只有需要它的使用者才能存取它的地方。

ipv6、字元集和客戶端最大主體是我在伺服器上的行,但您在這裡所做的事情不需要。您可以將它們命名為任何名稱並將它們放置在任何地方,因此如果您將檔案儲存在其他位置,請不要糾結於確切的檔案名稱或位置。這正是我喜歡的方式,我的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

相關內容