Apache を経由して 80番ポートで Tomcat 6 に接続できるようにする

Tomcat 6 に Apache を経由して接続する方法は下記の 2つがある。

mod_proxy.so と mod_proxy_ajp.so の違い

簡単にいうと、

まずは Apache 側の設定を行う

今回の場合は、Mac OS X で設定を行う。
まずは、httpd.conf に mod_proxy.so と mod_proxy_ajp.so が使えるようになっているか確認をする。
(MacPorts から Apache 2.x 系をインストールしていれば、すでにインストール済み状態になっている)

% less /opt/local/apache2/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

新しく Aapche 用の設定ファイルを作成する

% sudo vi /opt/local/apache2/conf/extra/httpd-tomcat6.conf
Password:

例えば http://localhost/tomcat/ にアクセスした場合に、Tomcat のルートディレクトリ(http://localhost:8080/)へアクセスするように設定する場合は、下記のようになる。
Apache の Location ディレクティブを使う場合は、

<Location /tomcat/>
    # 下の設定は ajp プロトコルで Apache と Tomcat 間の通信を行う
    ProxyPass ajp://localhost:8009/
    # http プロトコルで Apache と Tomcat 間の通信を行いたい場合は
    # 上記の設定をコメント行にして、下記をコメントアウトにする。
    # ProxyPass http://localhost:8080/
</Location>

ディレクティブ設定を使わない場合は、下記のようになる。

ProxyPass /tomcat/ ajp://localhost:8009/
# 下記は http プロトコルで Apache と Tomcat 間の通信を行う場合の設定
# ProxyPass /tomcat/ http://localhost:8080/

そして、最後にこの新しい設定ファイルを読み込む記述を、httpd.conf 最終行にする。

% sudo /opt/local/apache2/conf/httpd.conf
Include conf/extra/httpd-tomcat6.conf

設定内容に誤りがないことを確認して、Apache を再起動する。

% sudo /opt/local/apache2/bin/apachctl configtest
Syntax OK
% sudo /opt/local/apache2/bin/httpd -k restart

そして、http://localhost/tomcat/ にアクセスして、Tomcat 6 のページが表示されるか確認をする。

mod_proxy.so と mod_proxy_ajp.so の接続ポートの違い

上記の設定だと http プロトコルは 8080番ポートで Tomcat 6 に接続し、ajp プロトコルの場合は 8009 版ポートでの接続になっている。
なぜかというと、接続待ち側の Tomcat 6 の設定で、http プロトコルの接続は 8080 番で、ajp プロトコルは 8009番ポートになっているからである。
その設定は下記の設定ファイルで確認できる。

% less /opt/local/share/java/tomcat6/conf/server.xml
    <Connector port="8080" protocol="HTTP/1.1" 
        connectionTimeout="20000" 
        redirectPort="8443" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />