我正在尝试将 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
下面是我对反向代理的配置。(注意,网站 url 和公共 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
它也可以工作。
我曾尝试在 google 上搜索此问题的答案,但到目前为止,没有任何匹配结果与我的情况足够相似,无法提供帮助。
该设置
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。