$proxy_protocol_server_addr
$proxy_protocol_server_addr возвращает IP-адрес клиента, как он передан proxy protocol при его включении в NGINX. — 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 сохраняются.