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