Pound + Apache 環境下での IP アドレスアクセス制御

2012-1-23 08:00
このエントリーをはてなブックマークに追加

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   # (コメントになっていたら解除する)

コメントはまだありません

コメントはまだありません。

現在、コメントフォームは閉鎖中です。

72 queries. HTML convert time: 1.426 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン