IIS 10.0 反向代理与 ARR 和 URL 重写导致 ERR_TOO_MANY_REDIRECTS 仅在 HTTP 上

IIS 10.0 Reverse Proxy with ARR and URL rewrite causing ERR_TOO_MANY_REDIRECTS only on HTTP

我有一个 IIS 服务器托管一些外部域和一个内部 Web 应用程序,我还有一个位于 apache 服务器上的 woocommerce 网站。 IIS 服务器位于一个固定的 public IP 地址上,Apache 服务器也位于另一个固定的 public IP 地址上。所有基础设施都在内部。我们很快将放弃 /29 网络,转而使用单个固定 IP /32 网络。我计划使用 ARR 和 URL 重写以使 IIS 和 Apache 服务器都使用 1 个固定的 public IP。

我在 IIS 机器上安装了 ARR 并配置了以下 web.config,请注意,IIS 机器和 Apache 机器都有有效的证书。

<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules>
                <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^http(s)?://192.168.8.100/(.*)" />
                    <action type="Rewrite" value="http{R:1}://test.example.com/{R:2}" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
            <rules>
                <clear />
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{CACHE_URL}" pattern="^(https?)://" />
                    </conditions>
                    <action type="Rewrite" url="{C:1}://192.168.8.100/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

192.168.8.100 是在 Apache 上托管 woocommerce 的内部服务器。所以这之后的工作是 https://test.example.com works fine reverse proxied to appache from IIS, test.example.com also works fine. However http://test.example.com 失败 ERR_TOO_MANY_REDIRECTS 我可以看到使用 fidler.

我尝试过的东西

在 ARR 中关闭 'Reverse rewrite host in response headers',这将停止过多的重定向,但将主机显示为 192.168.8.100 地址并且显然无法通过证书,但是 woocommerce 网站正常运行。

在 /etc/apache2/sites-available/wordpress.conf 中将 HTTP 到 HTTPS 的重写规则添加到 Apache - 这对重定向错误过多没有影响。

在位于 /var/www/wordpress/.htaccess 的 .HTACCESS 文件中添加 HTTP 到 HTTPS 的重定向规则 - 这对重定向错误过多没有影响。

从 Wordpress 中删除 Really Simple SSL 插件 - 这对重定向错误过多没有影响。

对于现在要尝试什么,我已经束手无策了。

回答我自己的问题,这是一个小学生错误,当我尝试 IIS HTTP --> (HTTPS) 重写时,我忘记将它移到反向代理规则之前,因此它永远不会去执行它。向上移动,一切正常。呸!