2009-12-03 113 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

相關問題