IIS 使用 nginx 反向代理重置 TLS 握手

IIS 使用 nginx 反向代理重置 TLS 握手

我使用 2 台同步 IIS 服务器(作为故障转移的后端)和一个 nginx 反向代理(作为前端)。两台 IIS 服务器具有相同的配置和网站(由于同步)。所有网站都属于同一个域,我对所有网站都使用 SSL 通配符证书(*.example.com)。

我对每个站点都有两种不同的绑定。

第一个绑定使用 https 和一个与其他站点不同的唯一端口。例如,site1 使用 4433 端口,site2 使用 4434 端口等等。它还使用 ssl 通配符证书。它看起来像这样: 第一次装订

第二个绑定也使用 https,相同的 SSL 证书,但每个站点都使用 443 端口。我为此绑定使用主机名和 SNI,当然还有相同的通配符证书。因此,此绑定如下所示: 第二次绑定

所以有什么问题?

当 nginx 代理到第一个绑定(没有 hostname-sni 和唯一端口)时,一切正常。但是,当 nginx 代理到第二个绑定(使用 443 端口的 hostname-sni)时,Web 客户端会收到 502 和 504 错误消息。我使用 wireshark,我看到的是,当 nginx 发送“客户端 Hello”数据包以启动 TLS 握手时,IIS 会回复“重置”数据包,从而终止通信。

我注意到,当我取消选中“需要服务器名称指示”选项时,即使在已停止的网站上,所有网站都可以正常工作!我注意到的第二件事是,当我的浏览器使用第二个绑定(443 端口)直接向 IIS 发送 http 请求时,即使启用了 SNI,一切正常!

nginx 和 IIS 服务器都使用 TLSv1.2

抱歉,我的帖子太长了,有谁可以帮忙吗?

相关内容