$hostname

Переменная $hostname возвращает имя хоста сервера, указанное в серверном блоке. — NGINX Core (HTTP)

$hostname NGINX Core (HTTP)

Описание

Переменная $hostname задается во время обработки запроса и отражает имя хоста сервера, определенное в конфигурации NGINX. Она берет значение из директивы 'server_name', если она задана; в противном случае по умолчанию используется имя хоста операционной системы сервера. Эта переменная особенно полезна для приложений, которым необходимо знать имя хоста, обслуживающего запросы, что упрощает конфигурации, зависящие от идентичности сервера. NGINX вычисляет переменную $hostname на стадии обработки запроса, поэтому её можно использовать в различных контекстах, таких как логирование, перенаправления или условная маршрутизация запросов. Значения формируются на основе серверного блока, где обрабатывается запрос — это позволяет реализовывать динамические конфигурации, если определено несколько серверных блоков с разными именами. Если директива 'server_name' не указана, NGINX будет использовать имя хоста системы, которое можно проверить в командной строке с помощью команды 'hostname' в Linux. Для корректного задания этой переменной рекомендуется определять директиву 'server_name' в ваших серверных блоках, чтобы обеспечить предсказуемое поведение, особенно в средах с несколькими доменами или виртуальными хостами. Такой подход устраняет неоднозначности и гарантирует, что приложение будет использовать правильное доменное имя, соответствующее полученным запросам.

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

server {
    listen 80;
    server_name example.com;

    location / {
        add_header X-Host $hostname;
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Если 'server_name' не задан, по умолчанию используется имя хоста системы, что может привести к неожиданным значениям в конфигурациях с несколькими хостами.

Изменения имени хоста системы не отражаются в конфигурации NGINX до перезапуска NGINX, что может привести к несоответствиям во время работы.