$server_name
Переменная $server_name представляет имя виртуального хоста, обслуживающего запрос. — NGINX Core (HTTP)
Описание
Переменная $server_name в NGINX автоматически заполняется именем, указанным в server-блоке конфигурации. Она может соответствовать заголовку Host входящего запроса или быть явно задана в server-блоке. Значение $server_name зависит от того, как определён server-блок; оно может принимать разные формы — одиночное имя, подстановочный шаблон или регулярное выражение. Если запрос не совпадает ни с одним из server-блоков, определённых в конфигурации, переменная $server_name останется неустановленной. Эта переменная обычно используется для логирования, страниц ошибок и директив rewrite, позволяя серверу динамически настраивать ответы в зависимости от запрошенного хоста. При работе с несколькими именами сервера в одном server-блоке NGINX выполняет простой процесс сопоставления, отдавая приоритет точным соответствиям перед подстановочными шаблонами или регулярными выражениями. Чтобы эффективно использовать переменную $server_name, важно правильно сконфигурировать server-блок и убедиться, что он соответствует входящим запросам. К этой переменной также можно обращаться в логах для получения контекста об обрабатываемых запросах, что помогает при отладке и аналитике.
Пример конфига
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/example;
index index.html;
}
error_page 404 /404.html;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifЕсли для запроса не найден соответствующий server block, $server_name не будет установлено, что может привести к путанице в logs или redirects.
Избегайте использования $server_name в locations, где он может быть затронут определениями regex или wildcard в server blocks, так как результаты могут отличаться.
Помните, что наличие www или subdomains должно быть точно отражено в server_name, чтобы обеспечить правильное поведение.