server_name_in_redirect

Директива server_name_in_redirect управляет тем, будет ли имя сервера включено в перенаправления.

Синтаксисserver_name_in_redirect on | off;
По умолчаниюoff
Контекстhttp, server, location
Аргументыflag

Описание

Директива server_name_in_redirect при включении изменяет поведение NGINX при формировании перенаправлений (например, ответов HTTP 301 или 302) для запросов, обрабатываемых сервером. Конкретно она определяет, будут ли URL перенаправлений включать server_name, указанный в конфигурации блока server. По умолчанию при перенаправлении NGINX может использовать заголовок Host из запроса для построения URL перенаправления, но включение этой директивы принудительно заставляет NGINX использовать вместо этого server_name.

Эта директива особенно полезна в случаях, когда сервер NGINX обслуживает несколько доменных имён (т.е. виртуальные хосты) и вы хотите, чтобы перенаправления всегда отражали один конкретный домен. Например, если запрос приходит на example.com, но вы настроены перенаправлять на www.example.com, установка server_name_in_redirect в on гарантирует, что все перенаправления последовательно будут использовать www.example.com. Директива принимает флаг: значение может быть on для включения поведения или off для его отключения, что позволяет легко и гибко настраивать её в разных контекстах, таких как http, server и location блоки.

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

server {
    listen 80;
    server_name example.com www.example.com;
    server_name_in_redirect on;

    location / {
        return 301 https://www.example.com$request_uri;
    }
}

Отсутствие установки этой директивы в соответствующем контексте может привести к непоследовательному поведению перенаправлений.

Если вы используете несколько серверных блоков, убедитесь, что в каждом задан правильный server_name, чтобы избежать неожиданных результатов.

← Ко всем директивам