我无法让我的 IIS 8.5 服务器按预期运行。我正在尝试使用单独的网络服务器在同一个 IP 地址上托管两个域,都在 https 上。
自然地,IIS 被设置为我的“主要”网络服务器,监听 80 和 443。这里设置了一个带有 ssl 证书的域。我正在使用“URL Rewrite”模块将不安全的流量发送到安全端。另一个域设置为虚拟主机,并使用“HTTP 重定向”功能将流量发送到第二个网络服务器。对于第二个网络服务器,我有 Apache 2.4 在 8443 上监听,也带有证书。
所以,简单地说: http://example1.com -> URL Rewrite -> https://example1.com https://example1.com -> 从 IIS 解析和提供服务
http://example2.com -> HTTP 重定向 -> https://example2.com:8443 https://example2.com:8443 -> 由 Apache 解析和服务
我的问题是在浏览器(FF 或 Chrome)访问http://example2.com并被重定向到https://example2.com:8443之后,后续访问总是转到https://example2.com(没有端口) . 这失败了,因为在 ssl 握手期间,浏览器获得了 example1 的证书。
我已经追踪到这两个依赖 HSTS 的浏览器。一旦我清除了 HSTS 缓存,他们就能够再次找到正确的站点(使用端口)。
我怎样才能让这个设置顺利工作?我在 Apache 的 conf 中没有看到任何设置 HSTS 的内容,所以我认为它在 IIS 重定向中。我查看了这个在 IIS 上讨论 HSTS 的答案max-age
,认为我可以修改 Doug 的建议以将其设置为零以防止它被设置,但它似乎不起作用。
解决方案:
根据下面的建议,最好的解决方案是在 IIS 中托管两个域,绑定 SSL 证书并选中绑定中的“需要服务器名称指示”框。我必须对所有共享 IP 的域执行此操作。然后我可以创建一个反向代理(需要 URL 重写和应用程序请求路由模块),它将流量传递给 Apache 托管的实例。