我正在尝试将 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。