Редирект с http на https Nginx

Как и большая часть сайтов интернета, которые следуют современным тенденциям losst.pro использует безопасный протокол связи https. Многим сайтам при переходе на https необходимо, чтобы весь трафик, который приходит на порт http автоматически перенаправлялся на https.

Это необходимо из соображений SEO оптимизации, а также безопасности пользователей, чтобы никто не мог разорвать защищенное соединение. В этой статье мы рассмотрим как настроить редирект с http на https Nginx.

Редирект с http на https Nginx

Я предполагаю, что вы будете использовать постоянное перенаправление с кодом статуса 301. Это означает перемещение на постоянной основе. Такой метод используется чтобы сообщить поисковым системам или браузеру, что текущая ссылка была обновлена, и ее стоит обновить в своей базе, например, закладок браузера.

В конфигурационном файле Nginx должно быть две секции server, для сайта на https и сайта http. В секции http вы просто перенаправляете все запросы на https c помощью инструкции return, а во второй секции уже все обрабатываете. Например, первая секция:

server {

server_name losst.pro www.losst.pro;

charset off;

index index.php;

ssi on;

return 301 https://$host:443$request_uri;

set $root_path /var/www/losst/data/www/losst.pro;

root $root_path;

listen :80 default_server;

...

}

Вторая секция уже с обработкой SSL слушает запросы на 443 порту:

server {

server_name losst.pro www.losst.pro;

ssl on;

ssl_certificate "/var/www/losst/losst.pro_le2.crtca";

ssl_certificate_key "/var/www/losst/losst.pro_le2.key";

ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;

ssl_prefer_server_ciphers on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

add_header Strict-Transport-Security "max-age=31536000;";

charset off;

index index.php;

set $root_path /var/www/losst/data/www/losst.pro;

root $root_path;

listen :443 default_server;

...

}

Собственно, синтаксис тут очень прост, инструкция return позволяет возвращать необходимые коды ответа сервера. Здесь же мы возвращаем код 301, постоянный редирект, а также URL, на который собираемся перенаправить пользователя. Кроме директивы return, можно использовать инструкцию rewrite, с помощью нее выполняются точно те же действия:

rewrite ^/(.*)$ https://losst.com/$1 permanent;

Это обычный синтаксис регулярных выражений. В первом аргументе мы выделяем группу строки запроса, а во второй указываем правильный домен. Ее можно добавить вместо return 301. Также можно использовать такую конструкцию без отдельного блока server:

if ($host ~* ^(losst.ru|www.losst.ru)$ ){

rewrite ^/(.*)$ https://losst.pro/$1 permanent;

}

Теперь осталось протестировать то, что получилось. Сохраните файл и проверьте конфигурацию nginx:

sudo nginx -t

Затем, если все хорошо, перезапустите Nginx:

sudo systemctl restart nginx

Далее можно проверить какой ответ сервера вы получите с помощью curl:

curl -I losst.pro

Или позволим утилите проследовать полный путь по перенаправлению:

curl ILa losst.pro

Выводы

Настроить редирект на https nginx достаточно просто, фактически, все выполняется добавлением одной строки в конфигурационный файл, все остальное — дополнительные параметры. Редирект с https на http nginx будет выполняться так же. Только нужно будет изменить несколько букв в параметрах retrun. Не забывайте проверять правильно ли настроены редиректы с www и на https, это играет очень важную роль для SEO. Надеюсь, эта информация была полезной для вас.



2017-06-27T18:20:47
Сервер