29

複数のバックエンド IIS サーバーの前で AAR をリバース プロキシとして使用しようとしています。

  • IIS/AAR を実行しているサーバーに割り当てられた 1 つのパブリック 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>

しかし、悲しいかな、常にデフォルトのバインディングを返します - 何かアイデアはありますか?

4

3 に答える 3

58

この投稿には答えがあります - IIS7 Application Request Routing でヘッダーを変更する

preserveHostHeader を有効にする必要があります - UI でそれを行う方法を確認できませんが、これは機能します

コマンド ラインからこれを実行して、Machine/webroot/apphost 構成を更新します。

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
于 2013-02-12T22:15:06.693 に答える