База знаний
Заголовок 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

(0 голос(а))
Эта статья помогла
Эта статья не помогла

Коментарии (0)