Сервер сайта
Реальный IP посетителя
Как передавать на сайт IP настоящего посетителя
Зачем это настраивать
После подключения защиты посетитель сначала попадает на сервер GUJ. Он проверяет запрос и только потом передает его на ваш сервер сайта.
Если не сделать эту настройку, сайт будет видеть IP сервера GUJ вместо IP реального посетителя.
Из-за этого могут неправильно работать аналитика, ограничения по IP, антифрод, журналы безопасности и история входов в личный кабинет.
Как передается IP
GUJ добавляет IP посетителя в заголовок запроса. Это обычная служебная строка, которую читает Nginx или Apache.
X-Real-IP: реальный IP посетителя
X-Forwarded-For: список IP, через которые прошел запрос
X-Forwarded-Proto: исходная схема, http или httpsВ большинстве случаев используйте X-Real-IP. В нем один адрес: IP посетителя.
X-Forwarded-For нужен только для сложной схемы, когда между посетителем и сайтом есть еще один или несколько промежуточных серверов.
Принимайте эти заголовки только от IP серверов GUJ. Иначе любой человек сможет отправить поддельный заголовок и выдать себя за другой IP.
Какой IP указывать
Указывайте IP сервера GUJ. Это сервер, с которого ваш сайт получает уже проверенный трафик. Список ниже уже содержит нужные IP.
Не указывайте IP посетителя и не указывайте IP вашего сайта.
В Nginx это строки set_real_ip_from, в Apache - RemoteIPTrustedProxy или RPAFproxy_ips.
Если вы используете свой отдельный сервер защиты, укажите его публичный IP. Его видно в панели в разделе Мои ноды.
IP серверов GUJ
Разрешите вашему веб-серверу доверять этим IP:
82.202.171.236Nginx
Основной файл Nginx обычно находится здесь: /etc/nginx/nginx.conf.
На Debian и Ubuntu сайты часто лежат в /etc/nginx/sites-available/, а дополнительные общие настройки можно вынести в /etc/nginx/conf.d/real-ip.conf.
Модуль realip должен быть включен при сборке Nginx. В популярных дистрибутивах он обычно уже есть. Проверить можно так:
nginx -V 2>&1 | grep -- --with-http_realip_moduleДобавьте настройки в блок http. Если используете отдельный файл в /etc/nginx/conf.d/, убедитесь, что он подключается внутри блока http из nginx.conf.
Для GUJ обычно достаточно варианта с X-Real-IP: он берет один готовый IP посетителя.
set_real_ip_from 82.202.171.236;
real_ip_header X-Real-IP;Вариант с X-Forwarded-For тоже рабочий, но обычно он нужен только для схемы с несколькими промежуточными серверами:
set_real_ip_from 82.202.171.236;
real_ip_header X-Forwarded-For;
real_ip_recursive on;real_ip_recursive on нужен только для X-Forwarded-For, потому что там может быть несколько IP через запятую. Если коротко: он помогает Nginx выбрать IP посетителя, а не IP последнего промежуточного сервера.
Проверьте конфигурацию и перезагрузите Nginx:
nginx -t
systemctl reload nginxApache 2.4 и новее
Этот раздел нужен, если сайт принимает запросы сразу в Apache и перед ним не стоит Nginx.
На Debian и Ubuntu конфигурации Apache находятся в /etc/apache2/. Для remoteip удобно создать файл /etc/apache2/conf-available/remoteip.conf.
На CentOS, AlmaLinux, Rocky Linux и других RedHat-based системах каталог обычно /etc/httpd/, служба называется httpd, а файл можно создать как /etc/httpd/conf.d/remoteip.conf.
На Debian и Ubuntu выключите старый rpaf, если он был включен, и включите remoteip:
a2dismod rpaf
a2enmod remoteipДобавьте в /etc/apache2/conf-available/remoteip.conf:
<IfModule remoteip_module>
RemoteIPHeader X-Real-IP
RemoteIPTrustedProxy 82.202.171.236
</IfModule>Включите конфигурацию, проверьте синтаксис и перезагрузите Apache:
a2enconf remoteip
apache2ctl configtest
systemctl reload apache2Для RedHat-based систем команды обычно такие:
httpd -t
systemctl reload httpdApache до 2.4
Apache до 2.4 встречается редко. Если он все еще используется, обычно нужен mod_rpaf.
На Debian и Ubuntu настройки часто находятся в /etc/apache2/mods-enabled/rpaf.conf.
<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 82.202.171.236
</IfModule>Для стандартного mod_rpaf важно перечислить все IP серверов GUJ в RPAFproxy_ips. Если модуля нет, лучше обновить Apache до 2.4 или обратиться к администратору сервера.
Как проверить
- Откройте сайт через защищенный домен, а не напрямую по IP сервера сайта.
- Откройте журнал веб-сервера.
- Убедитесь, что в журнале виден ваш внешний IP, а не IP сервера GUJ.
Частые пути к журналам:
/var/log/nginx/access.log
/var/log/apache2/access.log
/var/log/httpd/access_logСвой внешний IP можно посмотреть с устройства, с которого вы открываете сайт, например через любой сервис проверки IP. Именно этот адрес должен появиться в логах после настройки.
Частые ошибки
- Указывают IP посетителя. Так делать не нужно: посетителей много, они меняются, и заранее их знать невозможно.
- Указывают IP сервера сайта. Это тоже неверно: доверенным должен быть сервер GUJ, с которого приходит очищенный трафик.
- Доверяют всем адресам через
0.0.0.0/0. Так любой клиент сможет подделать свой IP через заголовок. - Меняют конфиг, но не перезагружают веб-сервер.
- Проверяют прямой заход на сервер сайта, минуя GUJ. В этом случае настройка GUJ не участвует.
Помогла ли эта статья?
Ваш ответ поможет сделать документацию понятнее