使用IIS7应用程序请求路由修改标头

时间:2009-12-03 20:59:43

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

我在Tomcat前面使用IIS7应用程序请求路由作为ISAPI重定向的替代。基本的反向代理功能运行良好,但我在最终请求标头中没有足够的信息。我的应用程序存在于几个子域:customerone.ourservice.com,customertwo.ourservice.com等。每个子域运行相同的应用程序,但具有不同的品牌图形。

应用程序当前查看Host标头以告知要显示的品牌。当我使用IIS7反向代理时,该信息将丢失。我的标题现在是:

accept = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-charset = ISO-8859-1,utf-8;q=0.7,*;q=0.7
accept-encoding = gzip,deflate
accept-language = en-gb,en;q=0.7,en-us;q=0.3
cookie = JSESSIONID=......
host = 127.0.0.1:8080
max-forwards = 10
user-agent = Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15
x-original-url = /
x-forwarded-for = [iis7ip]:47567
x-arr-log-id = affbf81c-a5cf-4212-a43b-901cd9adcee6
connection = Keep-Alive

有什么办法可以将原始主机头插入反向代理传递的请求头中吗?

2 个答案:

答案 0 :(得分:39)

Application Request Routing有一个保留原始主机头的选项:preserveHostHeader。默认情况下,此选项为false。您可以使用以下命令启用它:

"C:\Windows\System32\inetsrv\appcmd.exe" set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost

答案 1 :(得分:2)

您可以手动设置preserveHostHeader标志。

    <proxy enabled="true" preserveHostHeader="true" />

</system.webServer>

在iis配置gui中,您可以在system.webServer/proxy下找到此值。

enter image description here