出站 URL 重写 IIS 7 ARR 导致应用程序崩溃

出站 URL 重写 IIS 7 ARR 导致应用程序崩溃

我在使用 ARR 在 IIS 7 中设置反向代理出站 URL 重定向时遇到了问题。该域有 2 个入站 URL 重写和 1 个出站 URL 重写。入站 URL 重写运行良好,我没有发现任何问题。

但是每次启用出站重定向时,应用程序池似乎都会崩溃。而且它会一直崩溃,直到我禁用出站规则。我认为这可能是我的重定向中的某种循环,但我不确定。我自己对正则表达式不太熟悉,而且我在网上搜索也没有找到太多信息。

以下是 2 个有效的入站重定向:

<rule name="Rule1" enabled="true" stopProcessing="false">
                <match url="^blog/$" />
                <serverVariables>
                    <set name="HTTP_ACCEPT_ENCODING" value="0" />
                    <set name="HTTP_X_FORWARDED_HOST" value="domain.com" />
                </serverVariables>
                <action type="Rewrite" url="http://blog.domain.com" appendQueryString="True" />
            </rule>
            <rule name="Rule2" enabled="true" stopProcessing="false">
                <match url="^blog/(.*)" />
                <serverVariables>
                    <set name="HTTP_ACCEPT_ENCODING" value="0" />
                    <set name="HTTP_X_FORWARDED_HOST" value="domain.com" />
                    <set name="HTTP_X_FORWARDED_FOR" value="{REMOTE_ADDR}" />
                </serverVariables>
                <action type="Rewrite" url="http://blog.domain.com/blog/{R:1}" appendQueryString="True" />
            </rule>

以下是启用后导致应用程序池崩溃的出站规则:

<outboundRules rewriteBeforeCache="true">
            <rule name="outRule1" preCondition="isHtml" enabled="false" stopProcessing="false">
                <match filterByTags="A" pattern="^http(s)?://blog.domain.com/blog/(.*)" />
                <action type="Rewrite" value="http{R:1}://www.domain.com/blog/{R:2}" />
                <conditions logicalGrouping="MatchAll">
                </conditions>
            </rule>
            <preConditions>
                <preCondition name="isHtml">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>

任何帮助深表感谢。

答案1

您可能需要将rewriteBeforeCache出站规则设置为 false

保罗

相关内容