Современные тенденции в области интернета диктуют условия использования безопасного протокола связи https. Так при переходе важно, чтобы чтобы весь трафик, который приходит на порт http автоматически перенаправлялся на https. Это важное условие не только для сайтов, которые могут потерять часть трафика, но и для пользователей, чтобы ни у кого не было возможности разорвать незащищенное подключение. Дальше рассмотрим как настраивается редирект с http на https Nginx.
Рекомендуем ипользовать перенаправление с кодом статуса 301.Он подсказывает поисковым системам или браузеру, что текущая ссылка была обновлена, и ее стоит обновить в своей базе, например, закладок браузера. Если мы откроем конфигурационный файл, то сможем обнаружить в нем две секции server, для сайта на https и сайта http. В секции http вы просто перенаправляете все запросы на https c помощью инструкции return, а во второй секции уже все обрабатываете. К примеру, первая секция:
server {
server_name losst.ru www.losst.ru;
charset off;
index index.php;
ssi on;
return 301 https://$host:443$request_uri;
set $root_path /var/www/losst/data/www/losst.ru;
root $root_path;
listen :80 default_server;
...
}
Вторая секция следует запросам на 433 порту:
server {
server_name losst.ru www.losst.ru;
ssl on;
ssl_certificate "/var/www/losst/losst.ru_le2.crtca";
ssl_certificate_key "/var/www/losst/losst.ru_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.ru;
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.ru/$1 permanent;
}
Дальше необходимо сохранить файл и проверить конфигурацию Nginx. Для этого используется:
$ sudo nginx -t
Если все Ок, перезапускаем Nginx:
$ sudo systemctl restart nginx
Проверяем, какой ответ сервера вы получите с помощью curl:
$ curl -I losst.ru
Или позволим утилите проследовать полный путь по перенаправлению:
$ curl ILa losst.ru
Как видим, выполнить настройку редиректа на https nginx достаточно просто, работа выполняется добавлением одной строки в конфигурационный файл, все остальное - дополнительные параметры.
Примените скидку, вставив промокод в специальное поле при оформлении заказа:
Примените скидку, вставив промокод в специальное поле при оформлении заказа: