CentOS Server セットアップ備忘録 (9) - Apache と Tomcat の 連携でリバースプロキシ内外で異なるコンテキストパスを使う

Apache の ProxyPass 設定で TomcatAJP 経由で連携するさい、素直にやると、リバースプロキシ内外でコンテキストパスをあわせる必要があります。(でないと、リダイレクトで意図しないパスに飛ばされたり、セッション管理が動きません。)

困るのは、ヴァーチャルホストで複数ドメインを運用していたりする場合。特にルートの取り合いは深刻です。

今までだましだましやってましたが、今回ちょっとだけ真面目に 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 の使い方を間違ってます。間違ったやつのコピペが拡散しちゃってんだろうなぁ。