Moderne tendenser på internettet dikterer brugen af den sikre https-kommunikationsprotokol. Så når man migrerer, er det vigtigt, at al trafik, der kommer til http-porten, automatisk omdirigeres til https. Dette er en vigtig betingelse, ikke kun for websteder, der kan miste noget trafik, men også for brugerne, så ingen kan bryde en usikret forbindelse. Lad os nu se, hvordan man konfigurerer omdirigering fra http til https i Nginx.
Vi anbefaler at bruge omdirigering med statuskode 301. Det fortæller søgemaskiner eller browsere, at det aktuelle link er blevet opdateret, og at det skal opdateres i databasen, f.eks. browserbogmærker. Hvis vi åbner konfigurationsfilen, kan vi finde to sektioner server, til https-site og http-site. I http-sektionen omdirigerer du blot alle anmodninger til https ved hjælp af returinstruktionen, og i den anden sektion behandler du alt. For eksempel den første sektion:
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;
...
}
Den anden sektion følger anmodninger på 433-porten:
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;
...
}
Som du kan se, er syntaksen i dette tilfælde meget enkel og klar. Så returinstruktionen giver os mulighed for at returnere de nødvendige serverresponskoder. Vi returnerer således 301-koden, den permanente omdirigering og den URL, som vi vil omdirigere brugeren til. Ud over return-direktivet kan du bruge rewrite-instruktionen, som udfører præcis de samme handlinger:
rewrite ^/(.*)$ https://losst.com/$1 permanent;
I syntaksen for regulære udtryk kan du tilføje domænet i stedet for return 301. Du kan også bruge en sådan konstruktion uden en separat serverblok:
if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}
Dernæst skal du gemme filen og kontrollere Nginx-konfigurationen. Til dette formål bruges den:
$ sudo nginx -t
Hvis alt er i orden, skal du genstarte Nginx:
$ sudo systemctl restart nginx
Tjek, hvilken slags serverrespons du får med curl:
$ curl -I losst.ru
Eller lad værktøjet følge den fulde omdirigeringssti:
$ curl ILa losst.ru
Som du kan se, er det ret enkelt at konfigurere en omdirigering til https nginx, arbejdet udføres ved at tilføje en linje til konfigurationsfilen, resten er alle ekstra parametre.