2009-12-03 68 views
14

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

该应用程序当前查看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 

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

+0

我现在不,但我注意到,在我们的环境我们的头被IIS7的是application/xhtml + xml的换出没有很好的理由。 – furtive 2010-01-29 22:04:45

回答

32

应用程序请求路由有一个选项来保留原始主机头:preserveHostHeader。该选项默认为false。您可以启用它:

​​
+0

谢谢。我无法再测试这个应用程序(该应用程序在几个月前退役),但您的答案看起来像是正确的方式来做到这一点,我接受它。 – 2011-08-25 08:03:06

+0

+1 - 我与托管的YouTrack实例有类似的问题,这解决了OpenID登录不起作用的问题 – 2012-07-08 21:19:15

+3

任何人都知道为什么这只适用于'ApplicationHost.config'而不是在每个人'web.config'? – 2016-01-28 22:51:15

1

您可以手动设置preserveHostHeader标志。

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

</system.webServer> 

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

enter image description here

+0

我更新了这个位置每个这个答案的文件,它不起作用。然后我运行了这个命令C:\ Windows \ System32 \ inetsrv> appcmd.exe set config -section:system.webServer/prox y/preserveHostHeader:“True”/ commit:apphost 最终解决了这个问题。它在运行时提供了很好的反馈:应用配置更改为配置提交路径“MACHINE/WEBROOT/APPHOST”中“MACHINE/W EBROOT/APPHOST”的“system.webServer/proxy” – BraveNewMath 2016-06-09 14:23:25

相关问题