Pound + Apache 環境下での IP アドレスアクセス制御
Web サーバでリバースプロキシとして Pound を使い、バックエンドに Apache を使う環境を構築した場合、通常では Apache のアクセスログはローカルホストからのアクセスとして記録されてしまいます。
アクセスログで接続元の IP アドレスを出力したい場合には、いくつか方法がありますが、私は mod_rpaf を使う方法を用いていました。
mod_rpaf を用いると、アクセスログにリモートIPが出るようになりました。ただし、mod_rpaf では、Allow from ディレクティブによるアクセス制御はできませんでした。
そこで代替手段を探したところ、リバースプロキシ環境下のapacheではmod_extract_forwardedよりもやっぱりmod_rpaf? – うまい棒blogという記事が見つかりました。この記事の結論とは逆になりますが、Apache 2.2 環境下で mod_extract_forwarded を利用することで解決しました。
リンク先では Apache 2.2 では動かないとありますが、CentOS の EPEL のリポジトリには mod_extract_forwarded が用意されているのでこれを利用するだけで OK です。
参考: CentOS で EPEL や ATrpms のパッケージを yum で利用できるようにする
# yum install mod_extract_forwarded Installed: mod_extract_forwarded.x86_64 0:2.0.2-2.el5
設定ファイルを編集して、
# vi /etc/httpd/conf.d/mod_extract_forwarded.conf
LoadModule extract_forwarded_module modules/mod_extract_forwarded.so MEForder refuse,accept MEFrefuse all MEFaccept 127.0.0.1 MEFaddenv on MEFdebug off
Apache を再起動すると、Pound のリバースプロキシ環境下でも、Allow from ディレクティブのアクセス制御でリモートの IP アドレスが利用できるようになります。
次のようなエラーが出ることがあります。
httpd を起動中: httpd.worker: Syntax error on line 215 of /etc/httpd/conf/httpd.conf: Syntax error on line 1 of /etc/httpd/conf.d/mod_extract_forwarded.conf: Cannot load /etc/httpd/modules/mod_extract_forwarded.so into server: /etc/httpd/modules/mod_extract_forwarded.so: undefined symbol: proxy_hook_scheme_handler [失敗]
httpd.conf でプロキシモジュールが有効になっていない可能性があります。CentOS の RPM 版では初期状態で有効のはずですが、余計なモジュールを読み込まないようにコメントしている場合があります。
# vim /etc/httpd/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so # (コメントになっていたら解除する)
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.