[Sy] Nginx+ApacheでIPが取れない場合の対処
2016/07/10
Nginx をリバースプロキシとして経由して、 Apache(httpd) で動いているサイトでIPを取得しようとすると、デフォルトのままだと プロキシのIPになってしまいます。 その対処方法についてです。
環境
CentOS6.x系にて行いました。(他の環境でも同じような対応でいけると思います)
準備
gcc と httpd-devel が必要になるので、インストールしていない場合は先に入れます。
$ sudo yum install -y gcc httpd-devel
mod_rpafモジュールをインストールする
次に Apache で IP をプロキシから受け取るためには、 mod_rpaf というモジュールが必要になります。
インストールは以下のように行います。
$ mkdir mod_rpaf-0.6
$ cd mod_rpaf-0.6
$ wget https://raw.github.com/ttkzw/mod_rpaf-0.6/master/mod_rpaf-2.0.c
$ sudo /usr/sbin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
このコマンドでやってることは、
- 適当なディレクトリを作業用に作成して移動
- mod_rpaf モジュールのソースコードをダウンロードしてくる
apxs
コマンドで、ダウンロードしてきたソースコードをコンパイルして Apache で使えるようにする
という感じです。
mod_rpafモジュールを有効化
mod_rpaf モジュールを使えるようになったので、有効化するための設定ファイル/etc/httpd/conf.d/mod_rpaf.conf
を作成します。
$ sudo vim /etc/httpd/conf.d/mod_rpaf.conf
mod_rpaf.conf
の内容は以下のようにします。
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10. 172.16.
RPAFheader X-Forwarded-For
Apacheを再起動して終了
設定を反映させるために、Apache を再起動します。(Nginx はあくまでもプロキシなので、再起動の必要はありません)
$ sudo service httpd restart
参考URL
こちらを参考にしました。ありがとうございます!
関連記事
- [Sy] nginx(リバースプロキシ)+node.jsでクライアントのIPがすべて127.0.0.1になってしまう場合の対処
- [Sy] nginx(リバースプロキシ)+node.jsでconnect() failedが頻発する場合の対処
- [Sy] nginxでhttpへのアクセスをhttpsにリダイレクトさせるための設定
- [Sy] Debian/Apacheのconfファイルで301リダイレクトをさせる方法
- [Sy] vagrantで作ったVMでApache(httpd)を起動して「apr_sockaddr_info_get() failed for xxxxx」と警告が出る場合の対処
- [Sy] MAMPを使わないでMacにローカルWeb開発環境を構築する〜その3:PHPとApacheの連携〜
- [Sy] MAMPを使わないでMacにローカルWeb開発環境を構築する〜その2:Apacheとは?〜