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

← Ко всем переменным