Съвременните тенденции в интернет налагат използването на защитения протокол за комуникация https. Затова при миграцията е важно целият трафик, който идва към порта http, автоматично да се пренасочи към https. Това е важно условие не само за сайтовете, които могат да загубят част от трафика, но и за потребителите, така че никой да не може да прекъсне незащитена връзка. След това нека видим как да конфигурираме пренасочване от http към https Nginx.
Препоръчваме ви да използвате пренасочване със статус код 301. то казва на търсачките или браузъра, че текущата връзка е актуализирана и трябва да бъде актуализирана в неговата база данни, например в отметките на браузъра. Ако отворим конфигурационния файл, ще открием два раздела сървър, за https сайт и http сайт. В раздела за http просто пренасочвате всички заявки към https, като използвате инструкцията за връщане, а във втория раздел обработвате всичко. Например, в първата секция:
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. Можете да използвате такава конструкция и без отделен сървърен блок:
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 е доста просто, работата се извършва чрез добавяне на един ред в конфигурационния файл, останалото са всички допълнителни параметри.