$host
Переменная $host в NGINX содержит имя хоста из HTTP-заголовка запроса или имя сервера, определённое в конфигурации. — NGINX Core (HTTP)
Описание
Переменная $host имеет ключевое значение для обработки входящих запросов, поскольку она напрямую извлекает имя хоста либо из Host request header, либо из соответствующего имени сервера, определённого в конфигурации NGINX. Когда поступает запрос, NGINX проверяет заголовок Host; если он присутствует, значение этого заголовка используется для установки переменной $host. Если заголовок отсутствует, NGINX возвращается к использованию имени сервера, настроенного в server block, который обработал запрос. Это поведение позволяет NGINX корректно отвечать на запросы, адресованные разным доменам или поддоменам, которые указывают на один и тот же экземпляр сервера. Этой переменной обычно присваиваются значения, соответствующие доменным именам или IP-адресам, к которым обращаются клиенты. Например, если пользователь запрашивает "http://example.com/path", переменная $host будет содержать "example.com". Если в запросе не указан hostname и в server block определён default server, $host будет хранить имя этого сервера. Важно отметить, что если NGINX настроен с несколькими server blocks для разных hostnames, значение $host может быть критичным для маршрутизации запросов в правильный блок на основе входящего URL. Переменная $host также может вести себя по-разному в зависимости от наличия директивы server_name. Если настроенные имена серверов для server block включают wildcards или regex, фактическое значение $host может зависеть от конкретного совпадения, найденного в процессе обработки запроса. Это обеспечивает корректную обработку запросов на основе конкретных hostnames, позволяя реализовывать мультиарендные конфигурации на одном экземпляре сервера NGINX.
Пример конфига
server {
listen 80;
server_name example.com;
location / {
return 200 "Host is: $host";
}
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifЕсли заголовок Host не отправляется клиентом, переменная $host может вести себя не так, как ожидалось, что может повлиять на маршрутизацию.
Убедитесь, что серверный блок с желаемым server_name настроен правильно, иначе вы можете получить неожиданные значения для $host.