$http_host

Переменная `$http_host` содержит значение заголовка Host, отправленного клиентом в HTTP-запросе. — NGINX Core (HTTP)

$http_host NGINX Core (HTTP)

Описание

Переменная `$http_host` извлекает значение заголовка Host, указанного в HTTP-запросе клиента. Эта переменная устанавливается во время фазы обработки запроса, когда NGINX разбирает входящие заголовки. Её основная цель — позволить серверу определить, к какому домену или поддомену пытается обратиться клиент, что критично для корректной маршрутизации и обслуживания запросов в средах, где на одном сервере размещено несколько сайтов (называемом виртуальным хостингом). Как правило, значение `$http_host` может быть либо полностью квалифицированным доменным именем (FQDN), либо IP-адресом, и иногда оно может включать номер порта, если клиент указал его в запросе. Ниже приведены некоторые возможные примеры содержимого `$http_host`: "www.example.com", "example.com" или "192.168.1.1:8080", если клиент явно указал порт в заголовке запроса. Если заголовок Host отсутствует в запросе, NGINX может использовать имя сервера по умолчанию, если оно настроено, либо поведение может привести к ошибкам в зависимости от остальной конфигурации.

Пример конфига

server {
    listen 80;
    server_name example.com;

    location / {
        return 200 "Host: $http_host";
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что заголовок Host не удаляется прокси‑серверами или балансировщиками нагрузки до того, как попадёт в NGINX, так как это приведёт к тому, что переменная будет пустой.

Значение `$http_host` может включать номер порта, если он явно отправлен клиентом, что может привести к непредвиденному поведению, если это не обработать должным образом.