通过 NGINX 反向代理通过 SSL 连接到旧 IIS 服务器时出现“错误网关”

通过 NGINX 反向代理通过 SSL 连接到旧 IIS 服务器时出现“错误网关”

我正在尝试将 NGINX 服务器设置为反向代理,以便能够通过 TLS 1.2 连接到仅限于 TLS 1.0 的旧 IIS 服务器

端口 80 上的连接工作正常。但是502 Bad Gateway当我尝试通过 https 连接时,出现了问题。当我查看 NGINX 错误日志时,我看到了这一行...

*364 peer closed connection in SSL handshake while SSL handshaking to upstream

以下是我的反向代理配置。(注意,网站网址和公共 IP 已更改以保持匿名)

 server{
        listen 80;
        listen [::]:80;
        server_name www.mywebsite.com;

        location /{
                proxy_set_header Host "www.mywebsite.com";
                proxy_pass http://192.168.201.235:80/; 
        }
}

server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;

        server_name www.mywebsite.com;

        ssl_certificate "/etc/pki/nginx/mywebsite.crt";
        ssl_certificate_key "/etc/pki/nginx/private/mywebsite.key";

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        location / {
                proxy_set_header Host "www.mywebsite.com";
                proxy_pass https://192.168.201.235:443/;
        }
}

我能做些什么来解决坏网关问题,同时仍然可以在代理和目标服务器之间建立安全连接?

我可以直接通过 HTTPS 连接到 IP 地址,并且如果我放入另一个启用 SSL 的网站,proxy_pass它也可以工作。

我曾尝试在谷歌上搜索此问题的答案,但到目前为止,没有一个结果与我的情况足够相似,无法提供帮助。

答案1

该设置proxy_ssl_protocols似乎控制 nginx 与上游服务器(在您的情况下为 Windows Server 2003)之间的连接,

https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/

其目前的默认设置可能会阻止 TLS 1.0,因此您需要设置proxy_ssl_protocols TLSv1;为启用 TLS 1.0。

相关内容