如何設定 Apache HTTP Server 透過 AJP 連結 Tomcat

Apache JServ Protocol (AJP13) 是 Tomcat 內建的功能,只要透過 mod_proxy_ajp 模組設定 ProxyPass 就可以讓 Apache HTTP Server 連接 Tomcat 了。

先啟用 mod_proxy_http 和 mod_proxy_ajp 這二個模組,直接在 httpd.conf 把 # 刪掉就可以了。
LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
再設定 ProxyPass 和 ProxyPassReverse 就可以了。

範例一:同一 tomcat server 不同 web app
<IfModule proxy_ajp_module>
# app1
ProxyPass "/app1" "ajp://tomcatserver1:8009/app1" timeout=1800
ProxyPassReverse "/app1" "ajp://server1:8009/app2"
# app2
ProxyPass "/app2" "ajp://tomcatserver1:8009/app2" timeout=1800
ProxyPassReverse "/app2" "ajp://server1:8009/app2"
</IfModule>

範例二:不同 tomcat server 不同 web app
<IfModule proxy_ajp_module>
# server1
ProxyPass "/app1" "ajp://tomcatserver1:8009/app1" timeout=1800
ProxyPassReverse "/app1" "ajp://server1:8009/app2"
# server2
ProxyPass "/app2" "ajp://tomcatserver2:8009/app2" timeout=1800
ProxyPassReverse "/app2" "ajp://server2:8009/app2"
</IfModule>

其實在網路上可以找到不少 mod_jk 模組的設定方法,但是麻煩的是還要另外編譯或是下載 so 檔,還有另外的 workers.properties 要設定 。除非是複雜的環境,才去碰 mod_jk 模組,不然一般情形下,直接用 mod_proxy_ajp 模組就可以適用了。

參考資料:
The Apache Tomcat Connectors - AJP Protocol Reference
Apache Module mod_proxy_ajp