リバースプロキシを導入する際はmod_rpaf

僕の自宅サーバには2つの Apache がインストールされていて、用途により使い分けています。
* Apache 1.3系 + mod_perl → Amazon Search / Google Similar といった高速性を求めるサービス
* Apache 2.0系 → その他の静的コンテンツや 通常用途の CGI 等の動的コンテンツ

なぜ使い分けるかというと、mod_perl はメモリー喰いなので、静的画像のためにプロセスがもったいない訳です。本当に必要なリクエストにのみ mod_perl をかませば良いですから。
参考ページ:リバースプロキシ Pound を導入しました。 : NDO::Weblog
で、2つの Apache を透過的に見せてあげるために、リバースプロキシの Pound を使っています。負荷分散も実装できて優れものですが、欠点が一つ。

リクエストをリバースプロキシ経由になるため、リモートホストのアドレスがすべて 127.0.0.1 になってしまいます。今まではメンドウなのでほったらかしにしていましたが、自分の作った「日本国内 IP かを判定するモジュール」が使えないのはイカンだろぅと思い、mod_rpaf をインストールしました。このモジュールは、リバースプロキシ経由のリクエストに付与されるリモートホストのアドレスを記録した X-Forwarded-For を Host に上書きしてくれるというものです。
参考ページ:MODULE.JP - リソースプール適材適所

インストール方法は下記の通り。su で実行。

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.5.tar.gz
tar xvfz mod_rpaf-0.5.tar.gz
cd mod_rpaf-0.5

次に、Makefile を Apache のインストール先にあわせて APXS=の行を変更する。
vi Makefile
APXS=/usr/local/apache/bin/apxs

次に、make をする。Apahce 1.3 と 2.0 でコマンドが異なる。
Apache 1.3 ならば下記を実行
make rpaf
make install
Apache 2.0 ならば下記を実行
make rpaf-2.0
make install-2.0


以上でインストールは完了。後は httpd.conf の最終行にでも下記の設定を加えれば完了。
# Apache 1.3 ならば下記を有効にする
LoadModule rpaf_module libexec/mod_rpaf.so
# Apache 2.0 ならば下記を有効にする
# LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1
- スポンサーリンク -

- スポンサーリンク -