web-dev-qa-db-ja.com

IISからローカルTomCatへのリバースプロキシ

IISにはいくつかのWebサイトがあります。

  • domain1.com
  • a.domain2.com
  • b.domain2.com

で実行されているTomcatもあります

localhost:8087

課題は、Tomcatを外部に公開する方法です。

b.domain2.com

私がしたこと:

  • IISのARRでプロキシを有効にする
  • B.domain2.comにリバースプロキシURL書き換えルールを追加しました

    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://localhost:8087/{R:1}" />
            </rule>
          </rules>
        <outboundRules>
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" >
                <match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:8087/(.*)" />
                <action type="Rewrite" value="http{R:1}://femiscan.a2itsolutionsllc.com/{R:2}" />
            </rule>
    
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>
    

私が見るもの:

ローカルに移動した場合

http://b.domain2.com 

私のブラウザはTomcatのウェブサイトを次のように表示します

http://localhost:8087 

(なぜ?)

外部ナビゲートした場合Chrome to

http://b.domain2.com 

にトンネリングしようとします

http://localhost:8087

IEでナビゲートすると、500エラーが返されます(フィドラー:HTTP/1.1 500 URL書き換えモジュールエラー)。

質問:私は何が間違っているのですか?それはどのように行うことができますか?

1
Alex Kazansky

アクションが書き換えに設定されているため、URLが書き換えられます。

IISマネージャー:

  • [サーバーファーム]を右クリックし、[サーバーファームの作成]をクリックします。名前を付けてください。
  • 「サーバー名またはアドレス」フィールドに、Tomcatインスタンスに完全修飾ドメイン名を入力します
  • [詳細設定...]をクリックし、[applicationRequestRouting]を展開して、httpPortを8087に変更します。
  • 書き換えルールを作成するように求められたら、[はい]をクリックします
  • ウィンドウの左側のペインの[サーバーファーム]の下に新しく作成されたファームをクリックします
  • サーバーファーム機能ビューページで[ルーティングルール]を開きます
  • 右ペインの[URL書き換え...]リンクをクリックします
  • 古い試行されたTomcat書き換えルールを削除します
  • 右側のペインの上部にある[ルールの追加...]をクリックし、[空白のルール]を選択します
  • 名前を付けます
  • [URLの一致]ペイン:
    • 要求されたURL:Matches the Pattern
    • 使用:Regular Expressions
    • パターン:*
  • [条件]ペインを展開し、[追加]をクリックします
    • 条件入力:{HTTP_Host}
    • 入力文字列を確認してください:Matches the pattern
    • パターン:b.domain2.com
    • Ignore Caseを確認してください
  • アクションペイン:
    • アクションタイプ:Route to Server Farm
    • スキーム:http://
    • サーバーファーム:(the name of your server farm)
    • パス:{R:1}注:これには多少の調整が必要な場合がありますが、例から判断すると機能するはずです)
  • 右側のペインで[適用]をクリックすると、
3
anjunatl