$proxy_protocol_addr
$proxy_protocol_addr возвращает адрес клиента из PROXY protocol, если он включён. — NGINX Core (HTTP)
Описание
Переменная $proxy_protocol_addr является частью поддержки PROXY protocol в NGINX, которая позволяет передавать исходный IP-адрес клиента через прокси-сервер. Когда клиент подключается к серверу NGINX, у которого включена поддержка PROXY protocol, NGINX может разобрать заголовок PROXY protocol, отправленный прокси, и извлечь исходный адрес клиента. Это позволяет NGINX корректно логировать запросы с фактическим IP-адресом клиента вместо IP-адреса прокси, который в противном случае был бы записан в лог. Эта переменная обычно используется в конфигурациях, где NGINX настроен за балансировщиками нагрузки или обратными прокси, реализующими PROXY protocol. Переменная заполняется только когда входящее соединение содержит соответствующий заголовок PROXY protocol; в противном случае она обычно возвращает пустое значение. Клиенты, подключающиеся напрямую к NGINX, не будут получать преимуществ от этой переменной, и она покажет IP последнего прокси. Как правило, она будет содержать либо IPv4, либо IPv6 адрес, в зависимости от типа соединения клиента.
Пример конфига
server {
listen 80 proxy_protocol;
location / {
proxy_pass http://backend;
add_header X-Real-IP $proxy_protocol_addr;
}
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifУбедитесь, что PROXY protocol включён как на сервере NGINX, так и на upstream-прокси.
Если входящее соединение не содержит заголовка PROXY protocol, эта переменная будет пустой.
Убедитесь, что только доверенным прокси разрешено подключаться по proxy protocol, чтобы избежать подмены.