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

cae*_*say 1 c# asp.net iis iis-7 url-rewriting

我在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>
Run Code Online (Sandbox Code Playgroud)

因此,基本上,位于domain.com/u/* domain.com/d/*或路径上的所有内容都domain.com/c/*将转发到本地服务器。效果很好,通常来说,到目前为止我没有任何问题。

我在本地服务器返回一个301 Permanent Redirect带有Location标题设置为像一个子域:subdomain.domain.com/somePath。该子域指向完全不同的服务器。

问题在于IIS正在重写Location标头的样子domain.com/somePath,它完全删除了子域。我通过访问站点确认了它的IIS问题,domain.com:12949并将其正确重定向到了子域。如何阻止IIS从Location本地服务器重写标头?

Evk*_*Evk 5

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

在IIS管理器中,选择当前服务器(而不是网站),打开Application Request Routing,然后在右侧列上会有一个选项Server Proxy Settings。在那里,您将看到“在响应头中反向重写主机”选项。如果已选中-取消选中它,则您的问题应得到解决。

在此URL上有一些ARR模块窗口的屏幕快照供参考:http : //blogs.msdn.com/b/chiranth/archive/2014/08/03/application-request-routing-part-2-reverse-proxy并解决arr-urlrewrite-issues.aspx问题