$realip_remote_addr
Переменная $realip_remote_addr содержит исходный IP-адрес клиента, когда сервер NGINX используется за прокси или балансировщиком нагрузки.
Описание
Переменная $realip_remote_addr предназначена для получения фактического удалённого IP-адреса клиента, когда NGINX настроен на работу за прокси или балансировщиком нагрузки. Такая ситуация часто возникает, когда клиент подключается через промежуточный сервер, и по стандартным методам соединения сложно определить исходный IP-адрес клиента. NGINX эффективно решает эту задачу с помощью заголовков X-Real-IP или X-Forwarded-For HTTP, которые являются общепринятыми стандартами передачи исходного IP-адреса.
Когда NGINX получает запрос, он проверяет эти заголовки в указанном порядке, и если в одном из заголовков найден IP-адрес, переменная $realip_remote_addr устанавливается в это значение. Если заголовки отсутствуют, переменная по умолчанию принимает прямой IP-адрес клиента, видимый с точки зрения NGINX. Правильная интерпретация этой переменной обычно требует корректной настройки как параметров вышестоящего прокси, так и заголовков, используемых для передачи IP-адресов клиентов. Это обеспечивает корректное отображение и запись информации, что приводит к более точным данным и мерам безопасности.
Как правило, значение $realip_remote_addr отражает либо фактический удалённый IP-адрес клиента, отправившего запрос, либо возвращается к последнему известному IP-адресу, если исходный определить не удалось. Это особенно важно в сценариях с множественными уровнями сетей, поскольку улучшает ведение журналов и возможности контроля доступа, обеспечивая точную идентификацию клиента.
Пример конфига
http {
set_real_ip_from 192.0.2.0/24; # Allow this range to set the real IP
real_ip_header X-Forwarded-For; # Specify the header to use
server {
listen 80;
location / {
# Access can be logged with the original client's IP
access_log /var/log/nginx/access.log main;
}
}
}Убедитесь, что директива set_real_ip_from правильно настроена, чтобы разрешить определённым IP-адресам прокси изменять IP клиента.
Будьте осторожны с ненадёжными прокси; в противном случае это может привести к подделке IP-адресов.
Директиву real_ip_header нужно установить в соответствующий заголовок (например, X-Forwarded-For или X-Real-IP), который используют ваши проксируемые запросы. Если она не установлена, $realip_remote_addr может не получить правильное значение.