Linux

沒有 SSL 終止的 Nginx 反向代理

  • October 13, 2020

我正在嘗試在 Windows 2k12 伺服器上設置 Microsoft 遠端桌面 Web 服務。這是功能齊全的,但是我想(需要)在它前面放置一個反向代理(Nginx)。

我只有 1 個外部 ip(固定),並且我在其後面託管多個網站,而不是所有網站都在同一個 VM 上。我設法讓 Nginx 使用虛擬主機作為 HTTP 和 HTTPS 流量的反向代理。但是,對於遠端桌面服務,SSL 解除安裝在啟動應用程序時給我帶來了問題。所以我想通過 Nginx 伺服器傳遞流量,而不解除安裝 SSL,並讓 Windows 伺服器完成所有 SSL 工作。似乎即使沒有輸入“ssl on;” Nginx 將來自另一個虛擬主機的證書放在 RD Web 的伺服器部分。我的配置中沒有類似“預設”塊的東西。

這是設置的外觀的一個小“草圖”:

                                                          -- |server 1 HTTP|
|internet user| -- |Nginx Rev Proxy listening on port 443| -- |windows server|
                                                          -- |server 2 HTTP|

以下是我擁有的配置文件(用於 RD Web):

server {
       listen 443;
       server_name host.domain.com;

       access_log /var/log/nginx/host.domain.com.access.log;

       location / {
               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_pass              https://172.29.0.249;
       }

}

我已經嘗試讓 Windows 伺服器接受純 HTTP,但這再次給遠端桌面應用程序帶來了問題。我可以登錄到那裡並停止。我之前已經提到過,但是當我將防火牆上的埠 443 轉發到 windows 伺服器時,遠端桌面連接可以正常工作,所以這似乎不是問題。

在這裡的任何幫助將不勝感激。我是 Nginx 及其配置的新手(過去一直使用 apache)。

nginx 不能通過 SSL 而不終止它。在 nginx 前面使用 haproxy,它能夠做到這一點(至少 1.5 版),將 RD Web 流量代理到您的終端伺服器,並將其他一切代理到 nginx。

今天,nginx 支持 ssl pass thru: https ://serversforhackers.com/tcp-load-balancing-with-nginx-ssl-pass-thru

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