TomcatとApacheのAJPによる連携設定
カテゴリ:Java
CentOS/Ubuntu 両対応
Apache側の設定
プロキシの準備
CentOS の場合:
Apacheで受けたリクエストをTomcatに転送する場合、httpd-proxy.confファイルに転送の設定を記述します。
そのため、まずhttpd.confファイルに、httpd-proxy.confをインクルードする設定を記述します。
Include conf/httpd-proxy.conf
次に /etc/httpd/conf/httpd-proxy.conf ファイルを作成します。
# touch /etc/httpd/conf/httpd-proxy.conf
Ubuntu の場合:
/etc/apache2/mods-available/proxy_ajp.conf ファイルを作成します。
転送設定を記述
/etc/httpd/conf/httpd-proxy.conf(Ubuntuの場合は/etc/apache2/mods-available/proxy_ajp.conf)に転送の設定を記述します。
以下の例では、/phpPgAdmin/ は転送を除外(Apacheで処理する)、/ と /mobile/、/article_entry/ はTomcatに転送します。
評価順序は上からになるため、範囲の広い / の設定は最後、除外設定(ProxyPass /xxx/ !)は最初に記述します。
ProxyPass /phpPgAdmin/ !
ProxyPass /mobile/ ajp://localhost:8009/mobile/
ProxyPass /article_entry/ ajp://localhost:8009/article_entry/
ProxyPass / ajp://localhost:8009/
※「ProxyPass /xxx/ !」は除外(転送しない)を意味します。
※「8009」ポートは、Tomcatの「AJP 1.3」用のコネクタポートです。
Ubuntu の場合は a2enmodコマンドで proxy と proxy_ajp モジュール、a2enconf コマンドで proxy_ajp.conf の設定を有効にします。
# a2enmod proxy # a2enmod proxy_ajp # a2enconf proxy-ajp
設定後、以下のコマンドで Apache を再起動します。
CentOS の場合:
# systemctl restart httpd
Ubuntu の場合:
# systemctl restart apache2
Tomcat側のAJPの設定(Tomcat 8.5.51 以降)
AJPポートの有効化
Tomcat 8.5.51 以降では初期設定でAJPポート(8009ポート)が無効になっているため、有効にする必要があります。
$CATALINA_HOME/conf/server.xml で以下の設定のコメントを解除します。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
/>
-->
変更後:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
/>
次に secretRequired="false" のパラメータを追加し、address の値を "localhost" に変更します。
変更後:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="localhost"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
secureRequired="false" />
Note
Apache Tomcat 8.5.51 以降では secretRequired パラメーターがデフォルトで true に設定されるため false に設定するか secret を指定するかいずれかの対処が必要です。
また、address="::1" のままだと IPv4 のループバックアドレスである 127.0.0.1 でリスンされません。
AJP転送で 8080 ポートが不要であれば以下のように設定をコメントアウトして、8080 ポートを無効にしてください。
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
-->
また、Tomcat で SSL(HTTPS)のページ (CONFIDENTIAL のページ) を構成している場合は、以下のコメントアウトを解除して 8443 ポートを有効にし、証明書を適切に設定してください。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
>
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
Tomcat を再起動して設定を反映します。
# systemctl restart tomcat
公開日時:2014年08月09日 08:29:24
最終更新日時:2024年03月30日 12:21:11