ショコラ
Nginx Apache のログファイルにリバースプロキシのIPが記録されてしまう
「X-Forwarded-For」でキメマス。
もっさん先輩
手順
- Nginx の設定ファイルの proxy_set_header に X-Forwarded-For を設定します。
proxy_set_header X-Forwarded-For $remote_addr;
または↓こちらです。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- Apache の remoteipモジュールを有効化します。
①PHPコンテナの場合
a2enmod remoteip
②CentOSコンテナの場合
既に mod_remoteipモジュールは有効化されているようです。有効化されていない場合は、自力で有効化します。
echo 'LoadModule mod_remoteip modules/mod_remoteip.so' > /etc/httpd/conf.modules.d/00-remoteip.conf
- アパッチの設定ファイルに RemoteIPHeader を追加します。
echo 'RemoteIPHeader X-Forwarded-For' > /etc/httpd/conf.d/remoteip.conf
- アパッチのログフォーマットを変更します。
sed -i -e 's/LogFormat "%h/LogFormat "%a/' /etc/httpd/conf/httpd.conf
- 設定を有効化するために、アパッチをリロードします。
service apache2 reload
因みに、PHPでは普通に REMOTE_ADDR で IPアドレスを取得できました。
echo $_SERVER['REMOTE_ADDR']
シチュエーション
リバースプロキシに Nginx を使っている。バックワードの Aapache のログファイルを見ると、リバースプロキシのIPが記録されていた。