web-dev-qa-db-ja.com

mod_proxy:元のリクエストからプロキシされたアプリへのパスパス

Apacheの背後にある閉じたポートのTomcatサーバーで実行されているアプリのリバースプロキシに苦労しています。便宜上、「 http:// mydomain/apps/my_app / 」のプロキシ要求を「 http:// localhost:8082/my_app」のTomcatアプリにリバースプロキシしたいとします。 / 'リモートサーバー上。 Apachevhost.confファイルの次のプロキシ設定ですべて正常に機能します。

ProxyRequests       off
ProxyPass /apps/    http://localhost:8082/
ProxyPassReverse /apps/  http://localhost:8082/

アプリの一部を除いて、クライアントで実行されるJava webstartファイルを生成し、 ' http:/)でTomcatアプリに接続する必要があります。/localhost:8082/my_app/webstart '(リモートサーバー上)。

問題の核心は、a)localhostの要求がクライアントコンピューターに関連して解釈され、b)リモートサーバーを指している場合でも、ポート8082がそこで閉じられているため、この接続が明らかに機能しないことです。

したがって、ProxyPreserveHostがどのように役立つかを理解し、元のリクエストのホスト名がJava webstartリクエスト:

ProxyRequests       off
ProxyPreserveHost   on
ProxyPass /apps/    http://localhost:8082/
ProxyPassReverse /apps/  http://mydomain/

これは機能します(プロキシされたTomcatアプリの内部リダイレクトでさえ、ProxyPassReverse設定のおかげで機能します)...ほとんど。 1つの問題が残っています:Java webstartファイルで使用されるURLに '/ apps /'の部分がなく、 ' http:// mydomain/my_app/webstart '、' http:// mydomain/apps/my_app/webstart 'の代わりに、/ apps /で始まるリクエストのみが逆プロキシされるため、明らかに失敗します。プロキシされたアプリは、元のURL全体を「表示」しません(「 http:// mydomain/apps/my_app / 」)が、プロキシ処理によって除外された部分のみを表示します(「 http:// mydomain/my_app / ')。

元のURLからプロキシされたアプリへのパスをApacheに渡すことができる、忘れたプロキシ設定はありますか?

敬具、

ロン

2
rvdb

プロキシバックエンドは元のリクエストをまったく認識しません。それがプロキシの要点です。

おそらく次のものが必要です。

ProxyPass /apps/ http://localhost:8082/apps/
ProxyPassReverse /apps/ http://localhost:8082/apps/

そして、Tomcatアプリをそのコンテキストで利用できるようにします。

2
adaptr