リバースプロキシを正しく構成する方法がわからないようです。返される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でも同じ問題が発生します。
問題は、Tomcatサーバーが認識しているパスを使用してHTMLにリンクを埋め込んでいることです。プロキシサーバーへのパスではありません。 (これは* .gifログエントリから取得しました)
ProxyPassReverseはHTMLのリンクを変更しません。 HTTPヘッダーのみを変更します。
これを機能させるには、アプリのコンテキストで適切な場所とパスを使用してTomcatを構成する必要があります。おそらく、webapp.warファイルの名前をROOT.warに変更し、コンテキスト構成を「/」に変更する必要があります。
ProxyPassReverseを使用する適切な方法を説明するこの記事を試してみてください。
http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html
mod_proxy
に戻る必要がある場合:
<Location /Tomcat>
ProxyPass ajp://127.0.0.1:8009/Tomcat
ProxyPassReverse ajp://127.0.0.1:8009/Tomcat
</Location>
絶対URLを出力しているため、複数の一般的なシナリオがあります。
mod_proxy_html を使用します。
または、RewriteEngine
を使用して/
のURLを/myapp/
に書き換えることもできます。
RewriteEngine On
RewriteCond %{REQUEST_URI} ! ^/myapp/
RewriteRule ^/(.*)$ /myapp/$1
これはメモリからのものなので、 mod_rewrite Documentation を介して自分で確認することをお勧めします。ただし、クライアントに送信されるリンクの書き換えは、すべての要求を内部で書き換えるよりも複雑ではないため、mod_proxy_html
を使用することをお勧めします。