簡體   English   中英

IIS AAR - 用於反向代理的URL重寫 - 如何發送HTTP_HOST

[英]IIS AAR - URL Rewrite for reverse proxy - how to send HTTP_HOST

嘗試在幾個后端IIS服務器前使用AAR作為反向代理。

  • 分配給運行IIS / AAR的服務器的一個公共IP地址

  • 然后設置出站URL重寫規則,以根據主機名重定向到多個后端服務器之一。

有點工作,但總是返回后端服務器默認站點(不是映射到主機名的站點),所以看起來主機名(HTTP_HOST)沒有從代理服務器傳遞到后端服務器。

(我已通過編輯主機驗證繞過反向代理,后端服務器返回綁定到主機頭的正確站點)

這是規則的一個示例(192.168.0.99是內部服務器,site.myco.com是主機名)

    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://192.168.1.99/{R:1}" />                   
            </rule>
        </rules>
    </rewrite>

已經嘗試過設置服務器變量

    <!-- Guessing server.myco.com is hard coded -->
    <serverVariables>
        <set name="HTTP_HOST" value="server.myco.com" />
    </serverVariables>

    <!-- Guessing picked up dynamically from incoming request host header -->
    <serverVariables>
        <set name="HTTP_HOST" value="{HTTP_HOST}" />
    </serverVariables>

但是唉總是返回默認綁定 - 任何想法?

這篇文章有答案 - 使用IIS7應用程序請求路由修改標頭

需要啟用preserveHostHeader - 無法看到你在UI中如何做到這一點,但這是有效的

從命令行運行此命令以更新Machine / webroot / apphost配置

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost

我的猜測是,當您重寫URL時,您的服務器不允許您更改服務器變量HTTP_HOST

在應用URL重寫的網站級別:

INETMGR

然后單擊右側選項卡上的Add...鏈接並添加HTTP_HOST變量:

添加HTTP_POST

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM