使用IIS7,ARR和&amp ;;设置反向代理时的出站规则问题URL重写

时间:2011-08-21 17:05:47

标签: asp.net iis iis-7 url-rewriting

我正在尝试为网站设置一个大致如本文所述的反向代理:http://blogs.msdn.com/b/carlosag/archive/2010/04/02/setting-up-a-reverse-proxy-using-iis-url-rewrite-and-arr.aspx

我遇到的问题是我的出站规则并未始终如一地应用,而且我找不到他们一直都失败的模式。有时,当我重新启动IIS并发出请求时,成功应用了出站规则,有时则没有。但是当我刷新页面时,响应一直没有重写的URL。下面是我正在使用的规则集,它相当于上面链接中的规则集,所以我认为规则不是问题。 IIS中必须有一些我缺少的设置。此应用程序当前托管在我的本地计算机(localhost)上:

 <system.webServer>
    <rewrite>
        <rules>
            <rule name="Route the requests for blog" stopProcessing="true">
                <match url="^blog/(.*)" />
                <conditions>
                    <add input="{CACHE_URL}" pattern="^(https?)://" />
                </conditions>
                <action type="Rewrite" url="{C:1}://www.mysite.com/{R:1}" />
                <serverVariables>
                    <set name="HTTP_ACCEPT_ENCODING" value="" />
                </serverVariables>
            </rule>
        </rules>
        <outboundRules>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://www.mysite.com/(.*)" />
                <action type="Rewrite" value="/blog/{R:2}" />
            </rule>
            <rule name="RewriteRelativePaths" preCondition="ResponseIsHtml1">
                <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" />
                <action type="Rewrite" value="/blog/{R:1}" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>
</system.webServer>

此帖子已编辑为使用更简单的规则集。

0 个答案:

没有答案