我在 IIS 上设置了一个网站 (www.mysite.com),以提供 SSL 和 Windows Auth,并将所有 HTTPS 请求转发到另一台服务器(BIOS 名称:internalserver;端口 2080)。指定此设置的规则如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://InternalServer:2080/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
这导致了以下行为(在 IExplorer 和 Firefox 中均可重现):
单击 www.mysite.com 会导致错误 502“Web 服务器在充当网关或代理服务器时收到无效响应”
重新加载页面会导致网站加载 - 但未格式化,表明未找到 CSS 文件。
第二次重新加载页面可使网站正确加载,包括 CSS 指定的格式。
每次关闭并重新启动浏览器时,错误 502 都会重新出现。
另一方面,如果我使用 Basic Auth 而不是 Windows Auth,则反向代理可以正常工作,不会出现上述任何问题。
我的问题是:
- 在这种类型的配置中是否已知会出现 502 错误?
- 这是否代表 IIS 中存在错误?
- 如果不是,是否已知与其他软件的交互会导致此问题?