Грамотный redirect

VVL nginx-forum на forum.nginx.org
Чт Авг 18 19:40:11 UTC 2016


Доброго времени суток. Знакомясь с nginx, была построена и некоторое время
использовалась конструкция:
server {
listen *:80;
listen *:443;
server_name example.com www.example.com;
if ($scheme = 'http') { return 301 https://$server_name$request_uri; }
if ($host = 'www.example.com') { return 301 https://example.com$request_uri;
}
...
}
которая одновременно перенаправляет весь трафик на https, а так же
производит редирект на домен без www.
Осматривая документацию и рекомендации экспертов, везде натыкаюсь на
конструкцию вида (с теми же функциями):
server {
listen *:80;
listen *:443;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen *:80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen *:443;
server_name example.com;
...
}
и возникает ряд вопросов, почему же эта конструкция лучше первой? Ведь:
1. В предложенном конфиге при, например, переходе от https://www.example.com
на https://example.com будет установлено два ssl/tls соединения
2. Если используется req_limit (и любые другие тонкие настройки хоста), то
его надо добавлять и в секцию, отвечающую за редирект.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,269039,269039#msg-269039



Подробная информация о списке рассылки nginx-ru