====== 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; ~省略~