$server_addr

Переменная $server_addr возвращает IP-адрес сервера, как указано в конфигурации NGINX. — NGINX Core (HTTP)

$server_addr 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-адресов, чтобы избежать непредвиденных результатов.