はじめに†
「AJP」での検索がちょこちょこっとあるようなので軽くまとめてみます。
AJPとは†
AJPがすること†
AJP(Apache JServ Protocol)はクライアントがApacheを中継してAPサーバ(Tomcat)にアクセスすることを実現する。
何が嬉しいのか†
クライアントがAPサーバにアクセスするとき通常次のようなURIを指定する。
http://localhost:8080/Hoge/
このうち「:8080」がポート番号を指定していて、APサーバは8080番ポートでクライアントからのアクセスを待ち受けていると分かる。
このままサービスを公開するとどうなるか。
- サーバ側は8080番ポートを開けておかなければならない
- クライアント側は8080番ポートを指定しなければならない
ではどうしたいか。
- サーバ側は80番ポートのみを開けておく
- クライアント側はポート番号を指定しない(80番ポートでのアクセス)
これを実現するのがAJPである(と僕は理解しています。)
AJPを設定する†
設定と反映†
結論からまず。次のファイルを書いて、
- /etc/httpd/conf.d/proxy_ajp.conf
ProxyPass /Hoge/ ajp://localhost:8009/Hoge/
httpdをリスタートする。
# /etc/init.d/httpd restart
動作確認†
ブラウザで次のURIにアクセスする。
http://(ドメイン名)/Hoge/
ドメイン名の箇所はローカルでテストしているのであればlocalhost、インターネット上に公開しているのであればサーバに割当たっているIPアドレスまたはIPアドレスに紐づけているドメイン名を指定する。
エラーになる?†
次の原因が考えられる。。
- 設定ファイルの記述を間違えている
- スラッシュ(「/」)の位置とか
- サーバがローカルで通信できていない
- localhostがIPv6設定だとダメだとか
- TomcatのAJP設定をしていない
- デフォルトでAJPを開けているが
- バージョンが違っていてそもそもこうではない
- Apache2.2とTomcat5.5