首页 文章

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

提问于
浏览
1

我在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 回答

  • 3

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

    在IIS管理器中,选择当前服务器(而不是网站),打开 Application Request Routing ,在右侧列中将有一个选项 Server Proxy Settings . 在那里你会看到"Reverse rewrite host in response headers"选项 . 如果选中它 - 取消选中它,你的问题就应该解决了 .

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

相关问题