別サーバに設置したTomcatとApacheを連携させる。
特定のディレクトリにアクセスされたら、Tomcatサーバに転送するという感じ。
#前提
Apache Server version: Apache/2.4.6 (CentOS)
Apache Tomcat Version 8.5.68
CentOS Linux release 7.5.1804 (Core):ApacheもTomcatも
#LoadModuleの設定
/etc/httpd/conf.modules.d : モジュール定義ファイル格納場所
上記ディレクトリ内00-proxy.confにて
デフォルトでいろんなファイルがあるが、それらの違いは何か。
-rw-r--r--. 1 root root 3739 Nov 16 2020 00-base.conf
-rw-r--r--. 1 root root 139 Nov 16 2020 00-dav.conf
-rw-r--r--. 1 root root 41 Nov 16 2020 00-lua.conf
-rw-r--r--. 1 root root 742 Nov 16 2020 00-mpm.conf
-rw-r--r--. 1 root root 957 Nov 16 2020 00-proxy.conf
-rw-r--r--. 1 root root 88 Nov 16 2020 00-systemd.conf
-rw-r--r--. 1 root root 451 Nov 16 2020 01-cgi.conf
答えはこちらを参考にした。
どうやら機能ごとに組み込むモジュールをそれぞれの設定ファイル(.confファイル)にて定義するために機能ごとの.confファイルがあるとのこと。ただ、どう使うかは割と使用者にゆだねられてるっぽい。
またbase.confとconf/http.confの意義が結構似通ってるらしく、以下のように混乱してる人もいるっぽい。
とりあえず今回はリバプロとしての機能を使うため00-proxy.confの設定を確認する。
以下mod_proxy.soとmod_proxy_ajp.soがproxy利用するときに必要のよう。
*デフォルトで設定されていた。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
またこのconf.modules.dディレクトリ内のファイルがきちんと読み込まれる必要がある。
/etc/httpd/conf/httpd.conf内にてIncludeされてることを確認する。
*これもデフォルトで設定されている。
Include conf.modules.d/*.conf
#httpdの転送設定
ProxyPassディレクトリとProxyPassReverseディレクトリでの設定が必要。
httpd.confにて設定する。
ProxyPass /tomcat9/ ajp://10.10.10.10:8009/
ProxyPassReverse /tomcat9/ ajp://10.10.10.10:8009/
上記だとhttp://<ApacheサーバのIP>/tomcat9/ だと10.10.10.10をもったTomcatサーバに8009ポートを使ってAJPプロトコルを用いてリクエストを転送することになる。
#Tomcatの待ち受け設定
またこのとき選択するポートはtomcatサーバにて定義する。
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443"
secretRequired="false" />
デフォルトだとコメントアウトされてる(