スポンサードリンク

前置き

この記事は2013/06/19のすごい広島 #5で試したことです。
sugoihiroshima5

本題

nginxでapacheにリバースプロキシを設定するとapacheのアクセスログのアクセス元IPが127.0.0.1になってしまいます。
(WordPressへのコメントがついた場合もアクセス元IPアドレスが127.0.0.1になってしまいます)
これを解消するためにはapacheにmod_rpafというモジュールをインストールすると良いらしいので、インストールしてみました。

OS:CentOS 6.4 x64
apache: 2.2系

しかし、調べてみると、mod_rpafの公式サイト(http://stderr.net/apache/rpaf/)で公開されているものはバージョン0.6で更新が止まっており、保守が継続されていないとのこと。
なので、apache 2.2系ではうまく動かないらしいのです。

もう少し調べてみると、apache2.2系でこのmod_rpafを動かせるようにしている方がいましたので、そちらをインストールします。その方のサイト(http://heartbeats.jp/hbblog/2012/03/mod-rpaf.html)の通りでうまくいきました。

1. 導入(コンパイル)に必要なパッケージのインストール

rootユーザになって必要なパッケージをインストール

# yum install gcc
# yum install httpd httpd-devel

2. mod_rpafのソースコードをダウンロードと(コンパイルと)インストール

一般ユーザになって以下のようにコマンドを実行する

$ mkdir mod_rpaf-0.6
$ cd mod_rpaf-0.6
$ wget https://raw.github.com/ttkzw/mod_rpaf-0.6/master/mod_rpaf-2.0.c
$ sudo /usr/sbin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

これでインストールは完了です

3. 設定ファイル/etc/httpd/conf.d/mod_rpaf.confを作る

rootユーザで/etc/httpd/conf.d/mod_rpaf.confを作成する。
内容は以下のとおり

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10. 172.16.
RPAFheader X-Forwarded-For

4. apacheを再起動する

rootユーザで

# service httpd restart

以上で完了です。
apacheにブラウザでアクセスしてみて、アクセスログのIPアドレスが127.0.0.1ではなくアクセス元のIPアドレスになっていれば成功です。

参考:リーバスプロキシ/ロードバランサとmod_rpaf – インフラエンジニアway – Powered by HEARTBEATS

補足

※nginxの設定で

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Real-IP $remote_addr;

というヘッダー設定がないと動かないかもしれません。

スポンサードリンク