web-dev-qa-db-ja.com

Apache2AJPプロキシTomcatで機能しない絶対URL

リバースプロキシを正しく構成する方法がわからないようです。返されるURLはすべて「/ Tomcat」ではなくルートディレクトリ「/」のものであり、メインの「デフォルト」のTomcatページのみが表示されます。次のプロキシルールを使用して、TomcatのフロントエンドとしてApache2を使用します。

ProxyPass /Tomcat ajp://127.0.0.1:8009/
ProxyPassReverse /Tomcat ajp://127.0.0.1:8009/

また、TomcatのAJPコネクタ設定でProxyNameを使用してみました。 mod_rewriteを使用してAJPリクエストをプロキシしても、同じ結果が得られました。

Apache error.logは、次の行を示します(独自のルートからイメージをロードしようとしています)。

File does not exist: /var/www/asf-logo-wide.gif, referer:

編集:AJPはmod_jkを介して機能しますが、サブフォルダーを使用するとHTTPでも同じ問題が発生します。

2
Indrek

問題は、Tomcatサーバーが認識しているパスを使用してHTMLにリンクを埋め込んでいることです。プロキシサーバーへのパスではありません。 (これは* .gifログエントリから取得しました)

ProxyPassReverseはHTMLのリンクを変更しません。 HTTPヘッダーのみを変更します。

これを機能させるには、アプリのコンテキストで適切な場所とパスを使用してTomcatを構成する必要があります。おそらく、webapp.warファイルの名前をROOT.warに変更し、コンテキスト構成を「/」に変更する必要があります。

3
Mike

ProxyPassReverseを使用する適切な方法を説明するこの記事を試してみてください。

http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html

2
Corey S.

mod_proxyに戻る必要がある場合:

<Location /Tomcat>
    ProxyPass ajp://127.0.0.1:8009/Tomcat
    ProxyPassReverse ajp://127.0.0.1:8009/Tomcat
</Location>
0
Andrew M.

絶対URLを出力しているため、複数の一般的なシナリオがあります。

mod_proxy_html を使用します。

または、RewriteEngineを使用して/のURLを/myapp/に書き換えることもできます。

RewriteEngine On
RewriteCond %{REQUEST_URI} ! ^/myapp/
RewriteRule ^/(.*)$ /myapp/$1

これはメモリからのものなので、 mod_rewrite Documentation を介して自分で確認することをお勧めします。ただし、クライアントに送信されるリンクの書き換えは、すべての要求を内部で書き換えるよりも複雑ではないため、mod_proxy_htmlを使用することをお勧めします。

0
pacey