Nginx + ELB 使用時にアクセス元IPが正しく記録されるようにする
ELB(Elastic Load Balancing)使用時にはまったのでメモ。
ELBを使用した場合、アクセス元IPがELBのIPアドレスになってしまうため、アクセスログに本来のIPが記録されなかったり、allowに許可IPを設定しても正しく動作しない問題が発生します。
そこでアクセス元IPが正しく記録されるようにnginxの設定を修正します。
1. NginxにHttpRealipModuleが組み込まれているかを確認
nginx -V
を実行し、「--with-http_realip_module」が表示されていることを確認
2. nginx.confを修正
通常は「set_real_ip_from」に「10.0.0.0/8」を設定
VPCを使用している場合はELBが所属するサブネットのネットワークアドレスを指定するそうです
「real_ip_header」には「X-Forwarded-For」を指定します
http {
…
set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
…
}
もしくは
server {
…
set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
…
}
3. nginxを再起動してアクセスログを確認
アクセスログには正しいアクセス元IPが記録されるようになっています。
また、allowの設定も正しく動作するようになります。