CentOS Server セットアップ備忘録 (9) - Apache と Tomcat の 連携でリバースプロキシ内外で異なるコンテキストパスを使う
Apache の ProxyPass 設定で Tomcat を AJP 経由で連携するさい、素直にやると、リバースプロキシ内外でコンテキストパスをあわせる必要があります。(でないと、リダイレクトで意図しないパスに飛ばされたり、セッション管理が動きません。)
困るのは、ヴァーチャルホストで複数ドメインを運用していたりする場合。特にルートの取り合いは深刻です。
今までだましだましやってましたが、今回ちょっとだけ真面目に Apache の設定方法を見たら何とかなったので、メモしておきます。
<VirtualHost ***.***.***.***:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
<Location />
ProxyPass ajp://localhost:8009/mywebapp1/
ProxyPassReverseCookiePath /mywebapp1 /
Order Allow,Deny
Allow from all
Redirect /mywebapp1/ http://www.mydomain.com/
</Location>
</VirtualHost>
これでイケてます。とはいえ、この無理ヤリなリダイレクトは通信手順的にも無駄だよなぁ。と思って、もうちょい試したら、これでイケました。
<VirtualHost ***.***.***.***:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
<Location />
ProxyPass ajp://localhost:8009/mywebapp1/
ProxyPassReverse http://www.mydomain.com/mywebapp1/
ProxyPassReverse http://mydomain.com/mywebapp1/
ProxyPassReverseCookiePath /mywebapp1 /
Order Allow,Deny
Allow from all
</Location>
</VirtualHost>
それにしても、ググッて出てくる設定例、結構高い確率で ProxyPassReverse の使い方を間違ってます。間違ったやつのコピペが拡散しちゃってんだろうなぁ。