Заголовок X-Forwarded-For. Получать реальные IP-адреса посетителей сайта
Опубликовано Анастасия Иванова on 09 March 2023 16:49
|
|
Наши серверы выступают в роли обратного прокси и фильтруют все входящие запросы к серверу-источнику, поэтому в access-logs вы увидите только IP адреса подсетей защиты. Если вы используете реальные IP пользователей в логике веб-приложения или хотите видеть их в access-logs, настройте заголовок X-Forwarded-For на вашем сервере.
NginxВоспользуйтесь модулем ngx_http_realip_module Напишите нам на managers@rusonyx.ru, чтобы получить актуальный список подсетей. Пример правила, которое нужно внести на сервер (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.
ApacheУстановите и настройте модуль mod_remoteip Напишите нам на managers@rusonyx.ru, чтобы получить актуальный список подсетей. Для 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 | |
|