複数のバックエンドIISサーバーの前でリバースプロキシとしてAARを使用しようとしています。
IIS/AARを実行しているサーバーに割り当てられた1つのパブリックIPアドレス
次に、ホスト名に応じていくつかのバックエンドサーバーの1つにリダイレクトするように、送信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 Application Request Routingでヘッダーを変更する
PreserveHostHeaderを有効にする必要があります-UIでそれを行う方法を見ることができませんが、これは機能します
これをコマンドラインから実行して、Machine/webroot/apphost構成を更新します
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
私の推測では、URLを書き換えたときに、サーバー変数HTTP_Host
を変更することはできません。
URL書き換えが適用されるWebサイトのレベル:
次に、右側のタブのAdd...
リンクをクリックして、HTTP_Host
変数を追加します。