サーバーは一度設定するとなかなか次に設定することがなく、設定方法を忘れてしまいます。
今回はApacheが走っているサーバーの前段としてNginxを用意した場合にするであろう設定例です。
※ファイルの場所はUbuntuの例です。他のディストリビューションの場合はパスが変わってくるので適宜読み替えてください。
Apacheの設定
ポートを80から8080へ変更します。※例ではついでにIPv4のみにしています。
/etc/apache2/ports.conf
Listen 80
Listen 127.0.0.1:8080
Apacheのアクセスログに残すIPがリモートのIPになるようremoteipモジュールを設定します。
※何も設定しないと全てNginxの走っているサーバーのIPになってしまいます。
このモジュールの設定ファイルを作成します。
/etc/apache2/mods-available/remoteip.conf
RemoteIPInternalProxy 127.0.0.1
RemoteIPHeader X-Forwarded-For
RemoteIPProxiesHeader X-Forwarded-By
モジュールと設定を有効化します。
$ sudo a2enmod remoteip
一般的にログフォーマットの設定では%hのほうがデフォルトで使われているのでこれを%aへ変更します。log_config
LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
ここまでの設定を有効化します。
$ sudo apache2ctl restart
これでApache側でリモートのIPが取得できるようになります。
お疲れさまでした。