$server_addr
Переменная $server_addr возвращает IP-адрес сервера, как указано в конфигурации NGINX. — NGINX Core (HTTP)
Описание
Переменная `$server_addr` является частью модуля NGINX Core и предоставляет фактический IP-адрес сервера, который отвечает на запрос. Эта переменная устанавливается в процессе обработки запроса, в частности в контексте TCP/IP коммуникации, что позволяет ей отражать адрес, к которому подключился клиент. Если у сервера несколько IP-адресов или он находится за балансировщиком нагрузки, `$server_addr` будет представлять основной адрес, который NGINX использует для ответа на входящие клиентские запросы. Эта переменная особенно полезна для логирования или формирования заголовков ответа. Стоит отметить, что `$server_addr` отражает адрес, с которого был обработан запрос, и определяется до передачи запроса в любые `location` блоки или обработчики. В сценариях, когда NGINX работает без конкретно привязанного IP сервера (например, в контейнеризированной среде, где IP-адрес может изменяться), для этой переменной может потребоваться соответствующая настройка, чтобы она всегда возвращала корректный адрес. Обычно она возвращает либо адрес IPv4, либо IPv6, в зависимости от конфигурации сервера и характера клиентских запросов.
Пример конфига
server {
listen 80;
server_name example.com;
location / {
add_header X-Server-IP $server_addr;
# other configurations
}
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifЕсли NGINX находится за обратным прокси, значение `$server_addr` может не отражать исходный IP клиента, если не настроить `proxy_set_header X-Forwarded-For` должным образом.
В конфигурациях IPv6 убедитесь, что сервер правильно настроен для обработки IPv6-адресов, чтобы избежать непредвиденных результатов.