6
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Apacheのプロキシ機能を使って特定のパスのみTomcatへ連携(AJP連携)する

Last updated at Posted at 2018-09-17

Apache/Tomca連携で調べたことをメモっておく(特に目新しい内容はないけど・・・)。

前提

  • 特定のパス(例:/hello)のみTomcatに連携し、それ以外のパス(HTML、CSS、JavaScriptなどの静的コンテンツ)へのアクセスはApacheのドキュメントルートにあるファイルを応答
  • Tomcatアプリにはコンテキストパスがある(例:/app
  • Tomcatへの連携はAJP経由で行う(HTTPではなくAJPを使う理由は特に触れないw)

image.png

Apacheの設定

Apacheに以下の設定を追加する。

# コメントアウトされている場合はコメントを除去
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

# ...

# リバースプロキシの設定
ProxyRequests Off
ProxyPass /hello ajp://ap:8009/app/hello
# レスポンスヘッダー値からコンテキストパスを除去
ProxyPassReverse / /app/
# クッキーパスの書き換え
ProxyPassReverseCookiePath /app /

検証アプリ

バックエンドアプリをSpring Boot(組み込みTomcat)で作っていることに特に意味はなし。単にTomcatインストールして・・・設定追加して・・・とかが面倒だっただけ。実際・・・調べた内容を反映することになる実アプリは・・・Spring Bootアプリじゃない(ってかSpringも使ってない)w

でもって、検証アプリでは以下の動作を検証した。

Apache管理のリソースへのアクセス

単純にApacheのドキュメントルート内で管理しているリソースへアクセスしてみる。

image.png

Tomcat管理のリソースへのアクセス

Apache経由でTomcatで管理しているリソースへアクセスしてみる。リバースプロキシの確認をするために意図的にリダイレクトしている。なお、Springのフラッシュスコープを使うことでセッション(=クッキー)連携の検証も行っている。

image.png

TomcatからApache管理のリソースへのリダイレクト

念のため・・・実アプリのエラーパターンも確認しておく。

image.png

補足

リバースプロキシの設定はヘッダー値の書き換えは行うが、レスポンスBODY内にあるURLの書き換えは行われない。
レスポンスBODYの中にあるコンテキストパスを除去する場合は・・・

  • mod_substitute
  • mod_actions
  • mod_ext_filter
  • mod_proxy_html

などを使う必要があるが、今回は未検証。

6
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?