Apache-2.2

nginx ssl 代理到多個 apache 伺服器

  • November 22, 2017

我有多個通過 HTTP 的 nodejs Web 應用程序伺服器,我需要驗證發送到這些伺服器的請求。我正在考慮使用 nginx 作為請求的代理,僅使用 SSL 證書驗證 nginx 伺服器,以便通過 HTTPS 提供發送回客戶端的數據/圖像。

這是我想到的結構:

                                  +--- app1 ---> node.js on ip:10001
                                  |
client --> https --> nginx --> http --- app2 ---> node.js on ip:10002
                                  |
                                  +--- app3 ---> node.js on ip:10003

我關心的是來自代理請求的響應對象。基於 Webkit 的瀏覽器和 Safari 警告我,我的應用程序使用 HTTPS,但通過 HTTP 提供內容(混合內容警告)。

通過驗證代理伺服器,我對客戶端的響應會被驗證為 HTTPS 還是 HTTP?

我的 nginx 代理將有一個經過認證的子域,如proxy.domain.com,因此請求將被完成,例如,如“ https://proxy.domain.com:10001 ”。請求是通過 HTTPS 向代理完成的,但返回的伺服器內容是通過 HTTP 的。代理將如何處理此類返回的內容?

它會應用 SSL 加密,因此像這樣發回資源:“ https://proxy.domain.com:10001/resource.png

提前謝謝大家

您正在嘗試的內容被命名為 SSL 終止。當反向代理處理 SSL 然後將請求轉發到使用 HTTP 協議的代理伺服器時。因此客戶端將具有 HTTPS 連接,但從反向代理 (nginx) 到代理伺服器 (apache) 將具有 HTTP 連接。在 nginx 中,您執行以下操作:

server {
   listen              443 ssl;
   server_name         www.example.com;
   ssl_certificate     www.example.com.chained.crt;
   ssl_certificate_key www.example.com.key;

   location /{
       proxy_pass http://upstream_name:80;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Scheme $scheme;
   }
}

如果您想進一步研究它,可以使用 Nginx https://www.nginx.com/resources/admin-guide/nginx-ssl-termination/的官方文件。對於混合內容,我想我對@Bert 有同樣的看法。這可能是因為在 HTML 中您仍然使用 http 協議。

引用自:https://serverfault.com/questions/884255