Tomcat 6.0 - Ubuntu 版 Apache 2.2 の連携

失敗

Apache と Tomcat を AJP (Apache JServ Protocol) で連結させるには、次の設定が必要です。

  1. mod_proxy および mod_proxy_ajp モジュールをインストールする。
  2. ProxyPass ディレクティブを使い、Apache から Tomcat へ転送するリクエストの設定をする。

Ubuntu 版の Apache では、mod_proxy と mod_proxy_ajp モジュールは標準インストールされているため、1 の作業は必要ありません。 次に 2 の 転送設定ですが、Ubuntu 版の Apache は設定ファイルの構成がオリジナルとは大きく異なるため、どこに記述すべきか少々悩んでしまいました。

環境

このレポートは、以下の環境について記述したものです。

OS Ubuntu 9.10
AP サーバ Tomcat 6.0.20
Web サーバ Apache 2.2.12-1ubuntu2.1

原因

Ubuntu 版 Apache の設定ファイルは、/etc/apache2 ディレクトリ以下にあります。概要は次の通りです。

パス 区分 説明
apache2.conf ファイル Apache 全体に適用される設定です。
httpd.conf ファイル Apache 全体に適用される設定です。
Ubuntu では空ファイルになっており、通常は使用しません。
port.conf ファイル 待ち受けポートの設定です。
magic ファイル MIME を定義します。
envvars ファイル 環境変数を定義します。
conf.d/ ディレクトリ Apache 全体に適用される設定ファイルを配置します。
charset など。
mods-available/ ディレクトリ モジュール別の設定ファイル (○○.conf) と読み込みファイル (○○.load) を配置します。
alias.conf、alias.load など。
mods-enabled/ ディレクトリ 使用するモジュール設定ファイルへのシンボリックリンクを配置します。
alias.conf (../sites-available/alias.conf へのリンク) 、alias.load (../sites-available/alias.load へのリンク) など。
sites-available/ ディレクトリ サイト別の設定ファイルを配置します。
default など。
sites-enabled/ ディレクトリ 使用するサイト設定ファイルへのシンボリックリンクを配置します。
000-default (../sites-available/default へのリンク) など。

解決策

まず、mod_proxy_ajp モジュールの設定ファイルを /etc/apache2/mods-available ディレクトリに作成します。 次に、/etc/apache2/mods-enabled ディレクトリにシンボリックリンクを作成し、設定ファイルを有効化します。

(1) AJP 設定ファイルの作成

/etc/apache2/mods-available ディレクトリに、AJP の設定ファイルを作成します。

~#  cd /etc/apache2/mods-available/
~#  vi proxy_ajp.conf

ここでは、すべてのリクエストをローカルマシンの 8009 番ポートに転送する例を示します。

[proxy_ajp.conf - 新規作成]
ProxyPass / ajp://localhost:8009/

(2) AJP 設定ファイルの有効化

mods-available ディレクトリに作成した設定ファイルは、そのままでは Apache に読み込まれません。 この設定ファイルを読み込ませるには、mods-enabled ディレクトリにシンボリックリンクを作成する必要があります。

~#  cd /etc/apache2/mods-enabled/
~#  ln -s ../mods-availables/proxy_ajp.conf proxy_ajp.conf

(3) Apache の再起動

Apache を再起動すると、作成した設定ファイルが読み込まれ、Apache と Tomcat が連携されます。

~#  apache2ctl restart

補足

上記の設定では、Tomcat Manager などへのリクエストも許可されてしまい、セキュリティ上、問題があります。 対策として <Location> ディレクティブで、アクセス制御をする例を示します。

■ Tomcat Manager へのアクセス制御

[proxy_ajp.conf - Tomcat Manager へのアクセス制御]
# すべてのリクエストをローカルマシンのポート 8009 に転送
ProxyPass / ajp://localhost:8009/

# 指定されたマシン (IP とサブネットマスクで指定) からのリクエストのみを許可
<Location /manager/*>
  Order deny,allow
  Deny from all
  Allow from 192.168.0.1/255.255.255.0
</Location>

関連レポート

参考サイト

コメント

コメント投稿
(非公開)
     « アイコン一覧 »
(必須)

作成日:2009/11/05
更新日:2009/11/05