http://nginx.org/en/docs/http/ngx_http_realip_module.html
ELBを使ったときに、EC2ではアクセス元のIPアドレスがELBのIPアドレスとなります。
このとき、ELBはヘッダー情報 X-Forwarded-For にクライアントのIPアドレス格納して情報をEC2に渡すので、これをnginxモジュールを利用して、リアルIPとして扱うように設定をすることができます。
以下、設定方法です。
現在のアクセス元のIPアドレスを確認。
確認のために phpinfo() のファイルを開いてみます。
これは、ELBのIPアドレスになっています。
# curl -s http://test-247271050.ap-northeast-1.elb.amazonaws.com/ | grep REMOTE_ADDR _SERVER["REMOTE_ADDR"] 172.31.6.30nginx設定ファイルの http ディレクティブもしくは、server ディレクティブに追記します。 ser_real_ip_from にELBのIPアドレスを設定します。VPCのサブネット・ネットワークアドレスを指定します。
Availability Zone:ap-northeast-1a CIDR:172.31.16.0/20 Availability Zone:ap-northeast-1c CIDR:172.31.0.0/20VPCで上記のように設定している場合は、172.31.0.0/16(172.31.0.1~172.31.255.254)とすればよいでしょう。
set_real_ip_from 172.31.0.0/16; real_ip_header X-Forwarded-For;nginxをリスタート
# /etc/init.d/nginx restartREMOTE_ADDRを確認。
# curl -s http://test-247271050.ap-northeast-1.elb.amazonaws.com/ | grep REMOTE_ADDR _SERVER["REMOTE_ADDR"] 52.69.60.48クライアントのIPアドレスになりました。