静的ファイル用のNginxフロントエンドを実行しており、Apacheのmod_rpafを使用してバックエンドに正しいリモートIPアドレスを設定することにより、PHPおよびPassenger用のApacheバックエンドにプロキシしています。Ubuntu 12.04(Precise)にアップグレードするまで、すべてが問題なく動作しました。これで、Apacheは127.0.0.1からのすべての接続を報告します。
関連する設定は次のとおりです。ここでのアップグレードによる変更はありません。
Nginx:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
mod_rpaf:
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1
RPAFheader X-Forwarded-For
</IfModule>
私は%{X-Forwarded-For}i
自分のApache LogFormatディレクティブで使用していて、アクセスログに正しいリモートアドレスが表示されているため、Nginxがアドレスを正しく渡していることがわかります。
phpinfo()
テスト、HTTP_X_FORWARDED_FOR正しいリモートアドレスを示しているが、REMOTE_ADDRが127.0.0.1です。これは、WordPressコメントなどのPHPアプリケーションにも反映されます。
Nginxとmod_rpafをX-Real-IPに切り替えても効果はありません。
見逃した変更はありましたか?
関連するバージョン情報、Ubuntuリポジトリからインストールされるすべて:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6