以前、リバースプロキシを立てましたが、
このままではバックエンドのWebサーバのログにはリモートホストのアドレスが
すべてプロキシサーバのアドレスになってしまいます。
1)バックエンドがApacheの場合
「mod_rpaf」を導入し、
リモートホストの値を「HTTP_X_FORWARDED_FOR」の値に上書きします。
apxsコマンドが必要なので、
# apt-get apache2-dev
CentOS系はyumでインストールします。
ソースはここからダウンロードします。
http://stderr.net/apache/rpaf/
# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz # tar zxfv mod_rpaf-0.6.tar.gz # cd mod_rpaf-0.6
さてコンパイル&インストール
1.3系
# apxs -i -a -c mod_rpaf.c
2.0系
# apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
リバースプロキシのIPアドレス:192.168.100.80
httpd.confに書いてもいいのですが、わかりやすいように別にしました。
# vi /etc/httpd/conf.d/rpaf.conf LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname off RPAFproxy_ips 192.168.100.80
# /etc/init.d/httpd restart
2)バックエンドがLighttpdの場合
こっちはいたって簡単で、
モジュール「mod_extforward」と
リバースプロキシのIPアドレス:192.168.100.80
を有効にします。
# vi /etc/lighttpd/lighttpd.conf server.modules = ( "mod_extforward", #リバースプロキシ用追加 ) extforward.forwarder = ("192.168.100.80" => "trust")
備考
IPv6が有効の場合、”::ffff:192.168.100.80“となります。
3)バックエンドがnginxの場合
http://wiki.nginx.org/HttpRealIpModule
set_real_ip_from
real_ip_header
を使って設定します。
# vi /etc/nginx.conf http { set_real_ip_from 192.168.100.80; real_ip_header X-Real-IP; }
いろんなバックエンドが動いてるなぁ
Apacheが一番メモリを食うな。
[tegaki]さて、バックエンド増やすか[/tegaki]