2017-07-05 12 views
0

私はアプリケーションをポート8050の下でtomcatでホストしています。 mydomain:8050。今、URLにポート番号が表示されていないのに、mydomain:8050にアクセスするためにフレンドリーなURL、例えばmydomain.comを使用したいとします。クライアントはmydomain:8050に内部的に解決されるべきであるmydomain.comを常に見なければなりません。他のサーバーに書き直し

IISサーバーがポート80で動作しています。mydomain:8050に解決できる書き換えオプションを使用するためにサイトを作成しました。((?:[^\/\n]|\/\/)+)(.*) 書き換えURL:{R:1}:8050{R:2}

その後、私はにURLをリダイレクトするようにIISサイトにリダイレクトを使用するポート90上のApache HTTP Serverをインストールし、それは私が

パターン使用パターンでは動作しませんでしたmydomain:90$S$Qに変更し、内部的にmydomain:8050にリダイレクトするためにApacheでrewriteを使用しました。これは、mydomain.com/queryStringのようなクエリ文字列があるときに機能しますが、ちょうどmydomain.comと入力すると動作しません。私はそれがmydomain:90にリダイレクトされているのを見ることができ、書き換えルールを実行することなくそこで停止します。これにより、URLがmydomain:90に変更され、クライアントに表示されます。

私の要件は、ユーザがmydomain.comと入力したときに、クライアントがそれを見ずに内部でmydomain:8050(クエリ文字列付き)に解決する必要があるということです。私はポート80で実行しているIISとポート90で実行しているApacheを持っています。これをどのように達成することができますか?私はこれがIISの書き換えルールで処理できると確信していますが、どうやってそれを行うのかはわかりません。

答えて

1

基本的には別のサーバに書き換えています。必要なのは基本的にプロキシIISで リバースプロキシ設定で、すべての要求

<rule name="ReverseProxyInboundRule1" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
    <add input="{CACHE_URL}" pattern="^(https?)://" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}://mydomain:8050/{R:1}" /> 
</rule> 
のようなプロキシルール

ApcaheとIISが同じサーバーにあるため、localhost:8050をバックエンドプロキシとして使用できます。

EDIT:また

あなたが任意のバックエンドプロキシから戻ってくると、あなたが来る場所ヘッダーをリダイレクトしたくない、あなたが「応答ヘッダにリバースrewritehost」をオフにして、それを行うことができますリダイレクトしている場合

  • ルーティングアプリケーション要求中のCl
  • アプリケーション要求ルーティングキャッシュにIISマネージャでサーバーノード
  • Go]を選択しますサーバーのプロキシ設定に嫌
  • チェックを外し、「レスポンスヘッダのリバースrewritehost」

Reverse rewrite host in response headers

+0

私はこれを試してみましたが、私はそれが 'MYDOMAINに書き換え表示されません:8050'。 'mydomain.com'にアクセスするとエラーが発生します – Maz

+0

どのようなエラーが出ますか?あなたはARRがインストールされていますが、それは動作しません。 –

+0

申し訳ありませんが、私はARRについて逃しました。インストールされているかどうかを確認するには?私はかなり新しいIISです。 – Maz