静的ファイル用のNginxフロントエンドを実行していて、PHPおよびPassengerのApacheバックエンドにプロキシし、Apacheのmod_rpafを使用してバックエンドに正しいリモートIPアドレスを設定します。すべてうまくいきました。 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>
_
Apache LogFormatディレクティブで_%{X-Forwarded-For}i
_を使用していて、アクセスログに正しいリモートアドレスが表示されているため、Nginxがアドレスを正しく渡していることがわかります。
phpinfo()
テストでは、HTTP_X_FORWARDED_FORは正しいリモートアドレスを表示していますが、REMOTE_ADDRは127.0.0.1です。これは、PHPコメントなどのWordPressアプリケーションにも反映されています。
Nginxとmod_rpafをX-Real-IPに切り替えても効果はありません。
見逃した変更はありましたか?
関連するバージョン情報、Ubuntuリポジトリからインストールされるすべて:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
自分でこれを扱っているだけです。金曜日に確認されたUbuntuのバグがありました。変更することで物事を再び機能させることができます:
<IfModule mod_rpaf.c>
に
<IfModule mod_rpaf-2.0.c>
/etc/Apache2/mods-available/rpaf.conf内
mod_rpafはDebian Jessieで非推奨になり、さらなる開発が中止されたようです。 Debian Jessieのデフォルトモジュールであるmod_remoteipに切り替えます。
この質問の更新です。 mod_rpafが使用する変数の形式が変更されました-Apacheは、現在上記のもの(RPAFenable、RPAFsethostname、RPAFproxy_ips、RPAFheader)からの開始を拒否します。
新しい形式は次のとおりです。
LoadModule rpaf_module modules/mod_rpaf.so
RPAF_Enable On
RPAF_ProxyIPs 127.0.0.1 10.0.0.0/24
RPAF_SetHostName On
RPAF_SetHTTPS On
RPAF_SetPort On
RPAF_ForbidIfNotProxy Off