Как зарегистрировать реальный IP пользователя с помощью Nginx в файлах журнала

Как зарегистрировать реальный IP пользователя с помощью Nginx в файлах журнала

Life-Hack

Мой сервер nginx находится за балансировщиком обратной прокси-загрузки. Как я могу показать правильный IP-адрес клиента в файлах журнала nginx, когда nginx находится за балансировщиком загрузки?

Если вы используете nginx за обратными прокси-серверами, балансировщиком загрузки и интерфейсом HTTPS, например HAProxy / Pound, вам может быть сложно зарегистрировать или получить реальный IP-адрес.

Вам нужно использовать модуль ngx_http_realip_module . Он используется для изменения адреса клиента и дополнительного порта на тот, который был отправлен в указанных полях хедера. Отредактируйте файл nginx.conf или default.conf :

$ sudo vi /etc/nginx/conf.d/default.conf

И установите следующие две директивы:

set_real_ip_from  192.168.1.4;
real_ip_header    X-Forwarded-For;

Сохраните и закройте файл.

Где,

  1. set_real_ip_from 192.168.1.4; Установите доверенные адреса, которые, как известно, отправляют правильные адреса замены. 192.168.1.4 — это мой балансировщик нагрузки или обратный прокси-сервер.
  2. real_ip_header X-Forwarded-For; Вам нужно определить поле заголовка запроса, значение которого будет использоваться для замены адреса клиента. X-Real-IP и X-Forwarded-For содержат реальный IP-адрес клиента. Этот заголовок обычно устанавливается в вашем балансировщике нагрузки или IP-адресе клиента.

Вы должны перезапустить или перезагрузить ваш nginx сервер:

$ sudo service nginx restart

ИЛИ

$ systemctl reload nginx

Проверка

Перед тем как выставить set_real_ip_from в nginx.conf :

$ sudo tail -f /var/log/nginx/access.log

Пример возможных выводов данных:

192.168.1.4 - - [18/Jan/2017:20:34:02 +0000] "GET / HTTP/1.0" 200 700 "https://theos.in/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

После того как вы выставите set_real_ip_from в nginx.conf :

$ sudo tail -f /var/log/nginx/access.log
204.55.22.11 - - [18/Jan/2017:20:34:02 +0000] "GET / HTTP/1.0" 200 700 "https://theos.in/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

Перевод: AnnaDavydova

Источник