Использование NginX за балансировщиком нагрузки и правильные ip адреса в логах


Если у Вас на сервере установлен Varnish + NginX, то в логах NginX все посетители будут с одним ip адресом - 127.0.0.1. Есть два варианта:

1. Изменить формат ведения логов
2. Заставить 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

Читаем логи.

Share Button
(Visited 152 times, 1 visits today)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.