Использование NginX за балансировщиком нагрузки и правильные ip адреса в логах
Если у Вас на сервере установлен Varnish + NginX
, то в логах NginX
все посетители будут с одним ip адресом - 127.0.0.1
. Есть два варианта:
- Изменить формат ведения логов
- Заставить NginX сразу обрабатывать правильный ip адрес
Для начала нужно заставить Varnish
отправлять этот ip адрес бэкэнду. Для этого добавьте следующие строки в секцию vcl_recv
:
if (req.restarts == 0) {
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
На самом деле можно ограничиться только:
set req.http.X-Forwarded-For = client.ip;
Теперь удостовертесь, что realip включен в вашем NginX:
nginx -V 2>&1 |grep realip
Если все ОК, добавьте следующие строки в файл настройки NginX (/etc/nginx/nginx.conf
) в секцию http:
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
Проверяем конфиг:
nginx -t
Перезапускаем Varnish и NginX:
/etc/init.d/varnish restart && /etc/init.d/nginx restart
Читаем логи.