$proxy_protocol_addr

$proxy_protocol_addr возвращает адрес клиента из PROXY protocol, если он включён. — NGINX Core (HTTP)

$proxy_protocol_addr 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, чтобы избежать подмены.