我有一个ASP.Net网站下面的重写规则让IIS作为一个反向代理: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
标题?
正如你所看到的,我已经发布了我的问题的配置 - 没有传出重写规则,没办法改写响应标题已被检查。 – caesay
应用程序请求路由选项我的意思是不涉及您的配置文件,并没有存储在那里。通常,当您使用url重写模块配置反向代理时,IIS会询问您是否要安装ARR。如果你同意,它会安装它,并检查“反向重写主机在响应标题”中为你。所以你甚至可能不知道你使用这个模块。 – Evk
该模块甚至不在IIS中的网站级别,而是位于服务器级别。这篇文章有我的意思的屏幕截图 - http://blogs.msdn.com/b/chi/chi/archive/2014/08/03/application-request-routing-part-2-reverse-proxy-and-troubleshooting-arr -urlrewrite-issues.aspx – Evk