没有 SSL 终止的 Nginx 反向代理

Goe*_*oez 6 linux ssl nginx reverse-proxy windows-server-2012

我正在尝试在 Windows 2k12 服务器上设置 Microsoft 远程桌面 Web 服务。这是功能齐全的,但是我想(需要)在它前面放一个反向代理(Nginx)。

我只有 1 个外部 ip(固定)并且我在它后面托管多个网站,而不是全部在同一个 VM 上。我设法让 Nginx 作为 HTTP 和 HTTPS 流量的反向代理,使用 vhosts。但是,对于远程桌面服务,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|
Run Code Online (Sandbox Code Playgroud)

以下是我拥有的配置文件(用于 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;
        }

}
Run Code Online (Sandbox Code Playgroud)

我已经尝试让 Windows 服务器接受纯 HTTP 但这再次给远程桌面应用程序带来了问题。我可以登录并停止。我之前已经提到过,但是当我将防火墙上的端口 443 转发到 Windows 服务器时,远程桌面连接没有问题,所以这似乎不是问题。

这里的任何帮助将不胜感激。我是 Nginx 及其配置的新手(过去一直使用 apache)。

小智 5

从版本 1.11.5 开始,nginx 支持具有 SNI 感知的直通 SSL 代理: http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html


Mic*_*ton 2

nginx 无法在不终止 SSL 的情况下通过 SSL。在 nginx 前面使用 haproxy(至少有 1.5 版本),将 RD Web 流量代理到您的终端服务器,并将其他所有内容代理到 nginx。