$server_addr
Переменная $server_addr возвращает IP-адрес сервера, как указано в конфигурации NGINX.
Описание
Переменная $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
}
}Если NGINX находится за обратным прокси, значение $server_addr может не отражать исходный IP клиента, если не настроить proxy_set_header X-Forwarded-For должным образом.
В конфигурациях IPv6 убедитесь, что сервер правильно настроен для обработки IPv6-адресов, чтобы избежать непредвиденных результатов.