IIS反向代理干扰重定向位置标头

时间:2015-09-11 00:57:15

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

我在ASP.Net网站上有以下重写规则,以使IIS充当反向代理:

<rewrite>
    <rules>
        <rule name="AppReverseProxy" enabled="true" stopProcessing="true">
            <match url="([d|u|c]/.*)" />
            <action type="Rewrite" url="http://127.0.0.1:12949/{R:1}" />
        </rule>
    </rules>
</rewrite>

基本上,domain.com/u/* domain.com/d/*domain.com/c/*路径上的任何内容都会转发到本地服务器。这样做很好,而且直到现在我还没有问题。

我让本地服务器返回301 Permanent Redirect,并将Location标头设置为子域,如:subdomain.domain.com/somePath。此子域指向完全不同的服务器。

问题是IIS正在重写Location标题,使其看起来像domain.com/somePath,它完全删除了子域名。我通过访问domain.com:12949的网站确认了它的IIS问题,并且它正确地重定向到子域。如何阻止IIS从本地服务器重写Location标头?

1 个答案:

答案 0 :(得分:3)

Url重写可以在响应中重写标头,但默认情况下不应该这样做。由于未在网站的重写规则中配置,因此很可能在服务器级别启用了“应用程序请求路由”模块。

在IIS管理器中,选择当前服务器(不是网站),打开Application Request Routing,在右侧列中将有一个选项Server Proxy Settings。在那里,您将看到&#34;在响应标头中反转重写主机&#34;选项。如果选中它 - 取消选中它并解决您的问题。

ARR模块窗口的一些屏幕截图可供此网址参考:http://blogs.msdn.com/b/chiranth/archive/2014/08/03/application-request-routing-part-2-reverse-proxy-and-troubleshooting-arr-urlrewrite-issues.aspx