Как получить в логах IP клиента вместо IP HAProxy

Однажды на одном сервере с HAProxy я заметил что в логах пишется IP адрес сервера, а не клиентов, либо просто вообще нет IP адреса и отображаются дефисы.

Так как на севере еще была установлена cPanel, то я посмотрел файл конфигурации Apache2 (/etc/apache2/conf/httpd.conf) и нашел:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Так как клиенты открывают сайты через Haproxy, то чтобы Apache2 получал реальный IP адрес клиента и писал его в логи, нужно добавить еще:

%{X-Forwarded-For}i

То, есть чтобы получилось так:

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Если на сервере установлен чистый Apache2, то можно внести изменения в его файл конфигурации, но если используется cPanel, то файлы конфигурации напрямую редактировать нельзя, потому что изменения могут стереться например после обновления или редактирования конфигурации через cPanel. По этому внесем это изменение не в файл конфигурации, а через меню WHM «Конфигурация Службы (Service Configuration)» — «Конфигурация Apache (Apache Configuration)» — «Глобальная конфигурация (Global Configuration)».

LogFormat (combined):

%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"

LogFormat (common):

%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b

Проверить корректность конфигурации можно выполнив команду:

httpd -t
apache2 -t

Если ошибок нет, то можно перезагрузить веб сервер чтобы применить изменения, в WHM это можно сделать через меню «Перезапустить службы (Restart Services)» — «Сервер HTTP (Apache)» или через терминал командами:

service httpd restart
service apache2 restart

Смотрите также мои статьи:
Расположение файлов логирования cPanel
Установка и настройка Apache2 в Linux

Оставьте комментарий

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