Наши серверы выступают в роли обратного прокси и фильтруют все входящие запросы к серверу-источнику, поэтому в access-logs вы увидите только IP адреса подсетей защиты. Если вы используете реальные IP пользователей в логике веб-приложения или хотите видеть их в access-logs, настройте заголовок X-Forwarded-For на вашем сервере.
Воспользуйтесь модулем ngx_http_realip_module.
Пример правила, которое нужно внести на сервер (set_real_ip указывает от каких сетей принимать этот заголовок, от остальных он приниматься не будет):
#Indicates that subnets are trusted
set_real_ip_from 9х.ххх.ххх.х/24;
set_real_ip_from 1хх.ххх.ххх.0/24;
set_real_ip_from 9х.ххх.ххх.х/24;
#Indicates that the X-Forwarded-For header contains the IP addresses
real_ip_header X-Forwarded-For;
Перезагрузите Nginx. Добавье переменную $http_x_forwarded_for в директиву log_format, чтобы восстановить отображение реальных IP пользователей в access-logs.
Установите и настройте модуль mod_remoteip.
Для RHEL/CentOS + Apache:
Установите необходимые пакеты
# yum install gcc wget httpd-devel
Скачайте исходники модуля
# wget -O /usr/local/src/mod_remoteip.c https://raw.github.com/ttkzw/mod_remoteip-httpd22/master/mod_remoteip.c
Компилируйте полученные исходники
# cd /usr/local/src/
# apxs -i -c -n mod_remoteip.so mod_remoteip.c
Создайте файл /etc/httpd/conf.d/mod_remoteip.conf.
Пример правила, которое нужно внести в файл:
Указание на то, что модуль remoteip необходимо загрузить из данной директории
# LoadModule remoteip_module modules/mod_remoteip.so
Указание на то, что IP-адреса находятся в заголовке X-Forwarded-For
# RemoteIPHeader X-Forwarded-For
Указание на то, что узлы защиты являются доверенными
# RemoteIPTrustedProxy 9х.ххх.ххх.х/24;
# RemoteIPTrustedProxy 1хх.ххх.ххх.х/24;
# RemoteIPTrustedProxy 9х.ххх.ххх.х/24;
Сохраните и выйдите
Перезапустите Apache
# service httpd restart
Для Debian/Ubuntu + Apache:
Установите необходимые пакеты
# apt-get install gcc wget apache2-prefork-dev
Скачайте исходники модуля
# wget -O /usr/local/src/mod_remoteip.c https://raw.github.com/ttkzw/mod_remoteip-httpd22/master/mod_remoteip.c
Компилируйте полученные исходники
# cd /usr/local/src/
# apxs2 -i -c -n mod_remoteip.so mod_remoteip.c
Если apxs2 не срабатывает, используйте apxs.
Создайте файл /etc/httpd/conf.d/mod_remoteip.conf.
Пример правила, которое нужно внести в файл:
Указание на то, что модуль remoteip необходимо загрузить из данной директории
# LoadModule remoteip_module modules/mod_remoteip.so
Указание на то, что IP-адреса находятся в заголовке X-Forwarded-For
# RemoteIPHeader X-Forwarded-For
Указание на то, что узлы защиты являются доверенными
# RemoteIPTrustedProxy 9х.ххх.ххх.х/24;
# RemoteIPTrustedProxy 1хх.ххх.ххх.х/24;
# RemoteIPTrustedProxy 9х.ххх.ххх.х/24;
Сохраните и выйдите
Компилируйте и перезапустите Apache
# mkdir -p /etc/apache2/modules
# cp /usr/lib/apache2/modules/mod_remoteip.so /etc/apache2/modules/
# service apache2 restart