Правильный редирект на https nginx

D
На сайте с 28.06.2008
Offline
1108
4841

Сейчас так, но вроде как ИФ рекомендуют не использовать, как можно оптимизировать?

Важно чтобы был редирект на https без www

server {
listen 80;
listen 443 ssl http2;
server_name site.ru www.site.ru;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ https://$host_without_www$1 permanent;
}
R
На сайте с 14.02.2010
Offline
77
#1

так не рекомендуют использовать в том случае, если после разворачивания условий получается две большие простыни конфига.

но вообще делают разные секции server- для ввв, для http и т.п., в которых сразу редирект на правильный адрес. тогда будет без всяких ифов и максимально оптимально. но не так красиво...

V
На сайте с 05.08.2007
Offline
87
#2

У мну так:

server {

listen 80;
server_name blabla.com www.blabla.com;
location / {
rewrite ^(.*)$ https://blabla.com$1 permanent;
}
}
server {
listen 443 ssl http2;
server_name blabla.com;
...
...

Хотя, наверно, можно и без "location /" в первом server.

С уважением, Victor (http://adm-lib.ru)
D
На сайте с 28.06.2008
Offline
1108
#3

Спасибо, а почему IF стараются не использовать? Он что медленнее обрабатывается?

Я к тому, если работает можно не трогать или все равно лучше заменить?

R
На сайте с 14.02.2010
Offline
77
#4

в вашем примере IF использовать можно.

не рекомендуется его использовать в сложных конфигурациях, когда, к примеру, вы сначала устанавливаете какую-то переменную, а потом в различных местах IF-ом делается тот или иной набор дайствий тоже ифом...

связанно это с тем, что nginx динамически не парсит каждое условие во время работы, а разворачивает все условия своеобразным препроцессором в несколько отдельных конфигураций.

из-за этого получаются жуткие простыни в конфиге которые часто работают совсем не так, как мы того ожидаем.

блин. мне это трудно это разъяснить. погуглите, где-то были примеры. а так же можно врубить дебаг и своими глазами увидать во что превращаются ваши ИФ-ы и реврайты...

Skom
На сайте с 02.12.2006
Offline
165
#5

server {

listen xxx.xxx.xxx.xxx:80;

listen [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:80;

server_name www.site.ru;

server_name site.ru;

return 301 https://site.ru$request_uri;

}

server {

listen xxx.xxx.xxx.xxx:443 ssl http2;

listen [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:443 ssl http2;

server_name site.ru;

et cetera.........

}

а все ифы - в морг

Cras amet qui numquam amavit quique amavit cras amet
iHead
На сайте с 25.04.2008
Offline
137
#6
Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий