2015-09-11 153 views
1

我有一個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標題?

回答

2

Url重寫可以在響應中重寫標題,但不應默認執行此操作。由於這不是在網站的重寫規則中配置的,因此很可能在服務器級別啓用了應用程序請求路由模塊。

在IIS管理器中,選擇當前服務器(不是網站),打開Application Request Routing,在右側欄中會出現一個選項Server Proxy Settings。在那裏您會看到「在響應標題中反向重寫主機」選項。如果選中 - 取消選中並且問題應該解決。

有在此URL引用ARR模塊窗口的一些截圖:http://blogs.msdn.com/b/chiranth/archive/2014/08/03/application-request-routing-part-2-reverse-proxy-and-troubleshooting-arr-urlrewrite-issues.aspx

+0

正如你所看到的,我已經發布了我的問題的配置 - 沒有傳出重寫規則,沒辦法改寫響應標題已被檢查。 – caesay

+0

應用程序請求路由選項我的意思是不涉及您的配置文件,並沒有存儲在那裏。通常,當您使用url重寫模塊配置反向代理時,IIS會詢問您是否要安裝ARR。如果你同意,它會安裝它,並檢查「反向重寫主機在響應標題」中爲你。所以你甚至可能不知道你使用這個模塊。 – Evk

+0

該模塊甚至不在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