server_name_in_redirect
Директива server_name_in_redirect управляет тем, будет ли имя сервера включено в перенаправления. — NGINX HTTP Core
Описание
Директива 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`, чтобы избежать неожиданных результатов.