-->

2010-01-29

mod_extract_forwarded

この記事は apache の手前にリバースプロキシを設置する場合の参考です。

.htaccess の allow,deny は mod_rpaf では無視されます。
nginx に X-Forwarded-For を設定します。
$ less /etc/nginx/nginx.conf
...
location ~ "\\.(?:php|cgi)$" {
        proxy_pass        http://localhost:8081;
        proxy_set_header  X-Forwarded-For  $remote_addr;
}
...

mod_extract_forwarded をインストールします。
mod_extract_forwarded は apache2 の時はソースを書き換えてコンパイルするというのは昔の話のようです。
$ sudo emerge -av www-apache/mod_extract_forwarded

configtest でエラーが出るので mod_proxy をインストールします。
/etc/make.conf
$ grep ^APA /etc/make.conf
APACHE2_MODULES="${APACHE2_MODULES} proxy"

/etc/conf.d/apache2
$ diff /etc/conf.d/apache2.2010-01-29 /etc/conf.d/apache2
35c35
< APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D PHP5 -D RPAF"
---
> APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D PHP5 -D PROXY -D EXTRACT_FORWARDED"

確認します。
$ cat /var/www/localhost/htdocs/.htaccess
Order Allow,Deny
Allow from 192.168.0.0/16
Allow from 127.0.0.0/8

mod_rpaf の場合、.htaccessで拒否しても外部からアクセスするとアクセス可能でした。
mod_extract_forwarded の場合 .htaccess で拒否すれば権限無しになりました。
[29/Jan/2010:07:46:28 +0900] が mod_extract_forwarded インストール後のアクセスです。
xxx.xxx.xxx.xxxは同じIPアドレスです。
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:30:49 +0900] "GET /phpinfo.php HTTP/1.0" 200 52986
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:30:51 +0900] "GET /phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.0" 200 2524
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:31:03 +0900] "GET /phpinfo.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.0" 200 2146
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:46:28 +0900] "GET /phpinfo.php HTTP/1.0" 403 274

0 件のコメント: