Apache 2.0 から Apache 2.2 への移行に伴い、JBoss との連携方法を AJP モジュール (Apache モジュール mod_proxy_ajp) を使用したものに変更しました。
AJP モジュールを使用した方法では、JK2 のコンパイルや worker2.properties を作成する手間がなくなります。
加えて、設定も httpd.conf (もしくはモジュール別のサブ設定ファイル) に書き込めるようになります。

図1 Syntax error
|
「ずいぶん便利になったんだなぁ」とちょっぴり感動しながら、Apache を起動すると Syntax error が発生。あれれ?
|
このレポートは、以下の環境について記述したものです。
| OS |
openSUSE 10.2 |
| AP サーバ |
JBoss Application Server 4.0.5 GA |
| Web サーバ |
Apache HTTP Server 2.2.4 |
|
原因は非常に単純なものでした。
Apache の configure 時に、肝心の AJP モジュールと Proxy モジュール (AJP モジュールを使用するには、Proxy モジュールが必要) を指定し忘れていたのです。
つまり、AJP モジュールと Proxy モジュールを有効にせず、AJP プロトコルの転送設定だけを記述していたことになります。
Syntax error は当然ですね。
私のような失敗をする人/した人 (いるのでしょうか? いれば、ちょっと安心。) のため、何より自分への戒めのため、解決策を記述しておきます。
AJP モジュールと Proxy モジュールを有効にして、Apache をコンパイル&インストールします。
その後、httpd.conf に設定を記述します。
(1) Apache のコンパイル&インストール
まず、Apache のソールファイル (httpd-2.2.4.tar.gz) を解凍します。
tar zxvf httpd-2.2.4.tar.gz
解凍後、コンパイルします。
configure の引数に --enable-proxy と --enable-proxy-ajp を指定し、AJP モジュールと Proxy モジュールを有効にします。
【注意】
--enable-proxy を --enable-proxy-ajp より前に入力してください。
順序が逆ですと、エラーになります。
cd httpd-2.2.4
./configure --enable-proxy --enable-proxy-ajp
make
インストールします。
make install
(2) httpd-proxy.conf の作成
Apache 2.2 では、モジュールごとに設定ファイルを分割することが推奨されています。
本稿では、Proxy モジュール用の設定ファイルとして httpd-proxy.conf (任意の名前に変更可能) を作成します。
| [httpd-proxy.conf] 新規作成 |
# すべてのリクエストをローカルマシンのポート 8009 に転送
<Location />
ProxyPass ajp://localhost:8009/
</Location>
|
|
【注意】
設定ファイルを分割せず、直接 httpd.conf に記述することもできます。
(3) httpd-proxy.conf を conf/extra ディレクトリにコピー
作成した httpd-proxy.conf を ${APACHE_HOME}/conf/extra ディレクトリに配置します。
cp httpd-proxy.conf /usr/local/apache2/conf/extra
(4) httpd.conf の修正
(2)、(3) で用意した httpd-proxy.conf を組み込むように httpd.conf を修正します。
| [httpd.conf] 以下を追加 |
# httpd-proxy.conf を組み込む
Include conf/extra/httpd-proxy.conf
|
|
以上の設定で、JBoss と Apache を連携させることができます。
ブラウザの URL に http://サーバ名/ と指定し、リクエストが JBoss に転送されていることを確認してください。

図2 動作確認
上記の設定では、Web コンソールや JMX コンソールなどへのリクエストも許可されてしまい、セキュリティ上、問題があります。
対策として <Location> ディレクティブで、これらの画面に対するアクセス制御をする例を示します。
■ Web コンソールへのアクセス制御
| [httpd-proxy.conf] Web コンソールへのアクセス制御 |
# ローカルマシンからのリクエストのみを許可
<Location /web-console/*>
Order deny,allow
Deny from all
Allow from localhost
</Location>
|
|
■ JMX コンソールへのアクセス制御
| [httpd-proxy.conf] JMX コンソールへのアクセス制御 |
# 指定されたマシン (IP とサブネットマスクで指定) からのリクエストのみを許可
<Location /jmx-console/*>
Order deny,allow
Deny from all
Allow from 192.168.0.1/255.255.255.0
</Location>
|
|