Šiuolaikinės interneto tendencijos reikalauja naudoti saugų https ryšio protokolą. Todėl migruojant svarbu, kad visas srautas, kuris ateina į http prievadą, būtų automatiškai nukreiptas į https. Tai svarbi sąlyga ne tik svetainėms, kurios gali prarasti dalį srauto, bet ir naudotojams, kad niekas negalėtų nutraukti neapsaugoto ryšio. Toliau pažiūrėkime, kaip sukonfigūruoti "Nginx" nukreipimą iš http į https.
Rekomenduojame naudoti nukreipimą su būsenos kodu 301. Jis praneša paieškos sistemoms arba naršyklei, kad dabartinė nuoroda buvo atnaujinta ir ji turėtų būti atnaujinta jos duomenų bazėje, pavyzdžiui, naršyklės žymėse. Jei atsidarysime konfigūracijos failą, rasime du serverio skyrius, skirtus https svetainei ir http svetainei. Skyriuje http tiesiog nukreipiate visas užklausas į https, naudodami grąžinimo instrukciją, o antrajame skyriuje viską apdorojate. Pavyzdžiui, pirmasis skirsnis:
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;
...
}
Antrasis skirsnis seka užklausas 433 prievadu:
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;
...
}
Kaip matote, šiuo atveju sintaksė yra labai paprasta ir aiški. Taigi grąžinimo instrukcija leidžia mums grąžinti reikiamus serverio atsakymo kodus. Taigi grąžiname 301 kodą, nuolatinį nukreipimą ir URL, į kurį ketiname nukreipti naudotoją. Be grąžinimo direktyvos, galite naudoti ir perrašymo instrukciją, kuri atlieka lygiai tuos pačius veiksmus:
rewrite ^/(.*)$ https://losst.com/$1 permanent;
Reguliariosios išraiškos sintaksėje vietoj return 301 galite įrašyti domeną. Tokią konstrukciją galite naudoti ir be atskiro serverio bloko:
if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}
Toliau reikia išsaugoti failą ir patikrinti "Nginx" konfigūraciją. Tam tikslui jis naudojamas:
$ sudo nginx -t
Jei viskas gerai, paleiskite "Nginx" iš naujo:
$ sudo systemctl restart nginx
Patikrinkite, kokį serverio atsakymą gaunate naudodami curl:
$ curl -I losst.ru
Arba leiskite įrangai sekti visą nukreipimo kelią:
$ curl ILa losst.ru
Kaip matote, konfigūruoti nukreipimą į https nginx yra gana paprasta, darbas atliekamas pridedant vieną eilutę į konfigūracijos failą, visa kita yra papildomi parametrai.