この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
mod_rpafを使ったIPアドレスのアクセス制限に悩まされたので紹介します。
リバースプロキシ(pound)などを使った環境でapacheのアクセスログに
出力されるIPアドレスがプロキシサーバのIPになる問題を解決するために利用されるmod_rpafですが、
ログの問題はクリアしたところで、IPアドレスを使ったアクセス制限が機能しない問題に悩まされました。
今回利用したmod_rpafのバージョンは0.6です。
apache2.2.xの環境で試しています。
インストール方法は割愛です。
インストール後に以下のような設定ファイルを記述します。
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips <プロキシサーバのIPアドレス>
「Allow from」にIPアドレスを記載したアクセス制限は機能しなかったのでRewriteCondを使った制限に書き換えました。
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
↓
RewriteCond %{REMOTE_ADDR} !^XXX\.XXX\.XXX\.XXX$
RewriteRule ^.*$ - [F,L]
mod_rpafのソースまでは見ていないですが気付き難いですね。
当然mod_authとmod_rewriteで扱う変数が違うのでしょう。