$proxy_protocol_server_addr

$proxy_protocol_server_addr возвращает IP-адрес клиента, как он передан proxy protocol при его включении в NGINX. — NGINX Core (HTTP)

$proxy_protocol_server_addr NGINX Core (HTTP)

Описание

Переменная $proxy_protocol_server_addr преимущественно используется в конфигурациях, связанных с proxy protocol — функцией, которая позволяет NGINX получать исходный IP-адрес и порт клиента при обработке запросов, проксируемых через другой уровень (например, AWS ELB или другие обратные прокси). Эта переменная заполняется, когда proxy protocol включён в блоке server или location с помощью директивы 'proxy_protocol'. Её значение отражает IP-адрес клиента, декодированный из заголовка proxy protocol, что делает её необходимой для точного ведения логов или контроля доступа на основе реального адреса клиента, а не адреса непосредственного прокси. Когда эта переменная установлена, это может значительно повысить точность метрик и логов, поскольку можно отслеживать реальные адреса клиентов вместо IP-адреса обратного прокси. Если proxy protocol не используется или настроен неверно, значение $proxy_protocol_server_addr будет пустой строкой. Поэтому часто эту переменную используют в сочетании с другими proxy-переменными, чтобы гарантировать корректное фиксирование информации об исходном клиенте.

Пример конфига

server {
    listen 80 proxy_protocol;
    location / {
        access_log /var/log/nginx/access.log '$proxy_protocol_server_addr';
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location

Убедитесь, что proxy protocol явно включён; в противном случае эта переменная не будет заполнена.

Неправильная конфигурация upstream proxy может привести к пустым или некорректным значениям.

Если вы работаете за несколькими уровнями прокси, убедитесь, что корректные proxy protocol headers сохраняются.