web-dev-qa-db-ja.com

Ubuntuアップグレード後のNginxフロント、Apacheバックエンドでのmod_rpafの問題

静的ファイル用の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

10
Kenn

自分でこれを扱っているだけです。金曜日に確認されたUbuntuのバグがありました。変更することで物事を再び機能させることができます:

<IfModule mod_rpaf.c>

<IfModule mod_rpaf-2.0.c>

/etc/Apache2/mods-available/rpaf.conf内

10
jetboy

mod_rpafはDebian Jessieで非推奨になり、さらなる開発が中止されたようです。 Debian Jessieのデフォルトモジュールであるmod_remoteipに切り替えます。

1
Kirrus

この質問の更新です。 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
0