使用 Windows Auth 的 IIS 反向代理间歇性抛出 502 错误

使用 Windows Auth 的 IIS 反向代理间歇性抛出 502 错误

我在 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 中存在错误?
  • 如果不是,是否已知与其他软件的交互会导致此问题?

相关内容