nginx:x-forwarded-for
LB・Proxy経由アクセスのClientIP取得
LBやProxy経由のアクセスのログをそのまま取得すると、アクセス元IPアドレスが
すべてLBやProxyのIPアドレスになる。
こういった場合は、X-Forwarded-Forから本当のアクセス元(クライアント)の
IPアドレスを取得する。
X-Forwarded-Forのフォーマット
最左がClientIP、カンマ区切りで経由してきたLBやProxyのIPアドレスとなる。
e.g. X-Forwarded-For: client1, proxy1, proxy2
xfor:192.168.26.48, 192.168.24.199
LB・Proxyの設定
一般的な設定であれば、X-Forwarded-ForにClientIPがセットされる。
e.g. HAProxyのオプション
option forwardfor except 127.0.0.0/8
Nginxの設定
192.168.24.xのネットワークでLB・Proxyが設置されていれば、以下のようになる。
server { ~省略~ ## LB X-Forwarded-For ## LB経由nginxのアクセスログにクライアントIPを記録する set_real_ip_from 192.168.24.0/24; # LB IpAddress real_ip_header X-Forwarded-For; ~省略~
ただしLBやProxyが多段になっている場合、上記設定では正しく取得できない。
その場合は、real_ip_recursiveオプションを設定する。
server { ~省略~ ## LB X-Forwarded-For ## LB経由nginxのアクセスログにクライアントIPを記録する set_real_ip_from 192.168.24.0/24; # LB IpAddress real_ip_header X-Forwarded-For; real_ip_recursive on; ~省略~
nginx/x-forwarded-for.txt · 最終更新: 2014/07/11 06:17 by clownclown