概要

フロントエンドに Apache を立てて、バックエンドに Tomcat を設置する。

OS は Debian GNU/Linux Sarge 。
サーバ hogehost 内に Apache 1.3.36 と Tomcat 4.1 をインストール。
Browser <-> Apache(80) <-> Tomcat(8180) な感じで連携。
Apache - Tomcat 間はリバースプロキシで。

なぜ、リバースプロキシか?

ほんとは、Apache - Tomcat 連携で、mod_jk とか使ってみたかったけど、バージョン・組み合わせによっていろいろパターンが違うっぽいし、よくわからないし、バックエンドサーバを Tomcat 以外にしたいときにめんどそうなので、とりあえずリバースプロキシ。

Tomcat 4.1 のインストール

Debian のパッケージを利用してインストールする。


apt-get install tomcat4 tomcat4-webapps

ポート番号は 8180 に設定(今回はデフォルトのまま)。

Apache 1.3.36 のインストールと設定

Apache はソースをコンパイルしてインストールする。
DSOを有効にする設定で。
ソースコードは /usr/local/src 以下に置く。


$ cd /usr/local/src
$ tar zxvf apache_1.3.36.tar.gz
$ cd apache_1.3.36
$ ./configure --enable-module=so
$ make
$ su
# make install

apxs にて、mod_proxy をコンパイル&インストール。


# cd /usr/local/src/apache_1.3.36/src/modules/proxy
# /usr/local/apache/bin/apxs -c *.c
# /usr/local/apache/bin/apxs -i mod_proxy.so

conf/http.conf に以下の設定を追加。


LoadModule proxy_module libexec/mod_proxy.so
ProxyRequests Off
ProxyPass /rp/ http://localhost:8180/
ProxyPassReverse /rp/ http://localhost:8180/

また、conf/http.conf にて、Port XXX を Port 80 に修正。

動作確認

ブラウザから http://hogehost/rp/ へアクセスしてみたが、http://www.localhost.localdomain/rp/index.jsp にリダイレクトされて、「www.localhost.localdomain というサーバが見つかりませんでした。」と表示されてしまう。

Mozilla Firefox の Live HTTP headers で確認したら、こんな感じ(一部削除&改変)。

http://hogehost/rp/ へのアクセス。


----------------------------------------------------------
http://hogehost/rp/
 
GET /rp/ HTTP/1.1
Host: hogehost
 
HTTP/1.x 302 Moved Temporarily
Server: Apache-Coyote/1.1
Location: http://localhost.localdomain/rp/index.jsp
Content-Length: 0
----------------------------------------------------------

もしかして、HTTPリダイレクトが駄目ってことなのかな?
というわけで http://hogehost/rp/index.jsp へアクセスしてみる。


----------------------------------------------------------
http://hogehost/rp/index.jsp
 
GET /rp/index.jsp HTTP/1.1
Host: hogehost
 
HTTP/1.x 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 8083
----------------------------------------------------------

こっちはうまく表示された。

他のリダイレクトされてしまうページ、たとえば、
http://hogehost/rp/tomcat-docs/ はダメだけど、
http://hogehost/rp/tomcat-docs/index.html はOKだった。

まぁ、リダイレクト以外はOKだったということで、まあよし。

Apache 1.3.36 のインストール (その2)

mod_proxy をインストールする方法。もうひとつ。
apxs を使わないで、Apache をソースからインストールする際に mod_proxy を追加する。


$ cd /usr/local/src
$ tar zxvf apache_1.3.36.tar.gz
$ cd apache_1.3.36
$ ./configure --enable-module=so --enable-module=proxy --enable-shared=proxy
$ make
$ su
# make install

http.conf には以下の設定がすでに追加されている。


LoadModule proxy_module       libexec/libproxy.so
AddModule mod_proxy.c

参考資料

以前に試したのは Apache 2.0 系 : Apache + mod_proxy + mod_cache + mod_disk_cache によるリバースプロキシの導入


コメント

すごいなー、リバースプロキシは複数指定可能みたい。

ProxyRequests Off
ProxyPass /rp/a.html http://localhost:8180/a.jsp
ProxyPassReverse /rp/a.html http://localhost:8180/a.jsp
ProxyPass /rp/b.html http://localhost:8180/b.jsp
ProxyPassReverse /rp/b.html http://localhost:8180/b.jsp

みたいな指定が可能。

tags: zlashdot Apache Apache Debian ReverseProxy Tomcat

Posted by NI-Lab. (@nilab)