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