はじめに
ApacheとTomcatの連携について、検証しました。
動作環境
・Apache 2.4
・Tomcat 9.0
連携の目的
静的コンテンツはApacheで処理し、動的コンテンツはTomcatで処理すると性能が良い
リクエストを httpd で処理し、Java で動的な処理が必要なページだけTomcat に実行させる。この時、Apache httpd はプロキシの役割となる。
ApacheとTomcatを同一サーバにするか、別サーバにするかはシステム要件による。
連携時はAJP (Apache JServ Protocol)を利用する。
AJP プロトコルは Tomcat と通信するためのプロトコル。
設定方法
設定概要
1. Apacheの設定。Tomcatにリレーする設定を行う
2. Tomcatの設定。Apacheから受け取る設定を行う
Apacheの設定
Httpd.confの修正をします。
1.以下2つのモジュールを有効にする
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
2.プロキシを追記します。
設定する値
ポート番号:ここでは8009ポート利用とする
ディレクトリ:Tomcatのディレクトリを指定します。
パスワード:ここではYOUR_PASSWORDとします。
※設定例
<Location /sample/>
ProxyPass ajp://localhost:8009/sample/ secret=YOUR_PASSWORD
</Location>
Tomcatの設定
server.xmlの修正をします。
- 8080を停止する。利用しないなら、セキュリティ上停止したほうがよい
設定例
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
- 8009ポートを有効にする。
・adress:接続元サーバ。同一サーバなら「127.0.0.1」など
・port:待ち受けポート番号。Apacheと合わせる
・redirectPort:処理するポート番号
・secret:パスワード。Apacheと合わせる。
※パスワードを使用しない場合は「secret」を削除し「secretRequired="false"」にすると無効になります。
設定例
<Connector protocol="AJP/1.3"
address="127.0.0.1"
port="8009"
redirectPort="8443"
secret="YOUR_PASSWORD"/>
※以下はパスワードを使用しない場合。
secretRequiredをfalseにすると無効になります。
<Connector protocol="AJP/1.3"
address="127.0.0.1"
port="8009"
redirectPort="8443"
secretRequired="false" />
###その他
利用できるコネクタタグは多数あります。必要に応じ設定します。
https://gakumon.tech/tomcat/server_xml/http.html
###参考サイト
https://qiita.com/polarbear08/items/f016a0675e6c9637e7b8
https://ashitaka.hateblo.jp/entry/2020/08/16/103012