質問: ### 前提 自分で作成したJavaアプリをWeb上にアップしたいと思い、VPSサーバーをレンタルしApache,JDK,Tomcatをインストールしました。80番ポートでApacheのtestページ、8080番ポートでTomcatのtestページを表示させるところまでは問題なくできたのですが、ApacheとTomcatを連携させることができず困っています。 ### 設定 * VPS ・さくらのVPS ・OS:CentOS Linux release 7.8.2003 * JDK ・バージョン:1.8.0_262 ・インストール方法:yum * Apache ・バージョン:Apache2.4.6 ・インストール方法:yum * Tomcat ・バージョン:apache-tomcat9.0.37 ・インストール方法:wgetで最新版をインストール ### 実現したいこと ApacheとTomcatをajpで連携したい。「http://IPアドレス/examples」で、tomcatのページが表示されるようにしたい。 ### 発生している問題・エラーメッセージ http://IPアドレス/examples でアクセスすると、503エラーの画面が表示される。 ``` Service Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. ``` Apacheのエラーログについては以下の通りです。 ``` [Mon Sep 07 20:02:49.425625 2020] [proxy:error] [pid 2152] (111)Connection refused: AH00957: AJP: attempt to connect to 160.16.151.224:8009 (160.16.151.224) failed [Mon Sep 07 20:02:49.425783 2020] [proxy:error] [pid 2152] AH00959: ap_proxy_connect_backend disabling worker for (160.16.151.224) for 60s [Mon Sep 07 20:02:49.425805 2020] [proxy_ajp:error] [pid 2152] [client 自分のグローバルIP:64334] AH00896: failed to make connection to backend: 160.16.151.224 ``` ### 今まで試したこと * Tomcat 1. `/opt/apache-tomcat/conf/server.xml`の8080番ポートの記述をコメントアウトし、8009番ポートのコメントアウトを削除する 2. 同ファイルの8009番ポートの記述内容を以下の通り変更する(adress,secureRequired) ``` ~中略~ ``` * Apache ・`/etc/httpd/conf.d`ディレクトリに`httpd-proxy.conf`ファイルを作成 ``` ProxyPass / ajp://IPアドレス:8009/examples/ ``` ### コメント 今までQiitaの記事や動画等参考にしてがんばってみましたが、Linux、サーバーの知識が不足しており、何が原因なのか判断できません。 設定を変更するたびに`systemctl restart`してはいますが、うまくいく気配が全くありません。 初心者のため質問に至らない点もあると思いますが、原因・解決策等ご教示いただければ幸いです。
回答: Apacheのmod_ajpモジュールを利用する場合は、以下のconfのコメントアウトを解除したのち、Tomcatのajp設定を有効にして、ProxyPassを設定すれば動作します。 ``` #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so ``` なお、tomcatの設定変更をせずにApache側だけで設定を完結させる方法として、リバースプロクシを設定して行うと、tomcat単体で再起動ができ、より簡単に構築・運用ができます。(mod_ajpはApacheとTomcatの両方を再起動しないと連携できなくなるケースがあります)