Moderné trendy na internete si vyžadujú používanie zabezpečeného komunikačného protokolu https. Pri migrácii je preto dôležité, aby sa všetka prevádzka, ktorá prichádza na port http, automaticky presmerovala na https. Je to dôležitá podmienka nielen pre weby, ktoré môžu prísť o časť prevádzky, ale aj pre používateľov, aby nikto nemohol prelomiť nezabezpečené pripojenie. Ďalej si ukážeme, ako nakonfigurovať presmerovanie z http na https Nginx.
Odporúčame použiť presmerovanie so stavovým kódom 301. Ten vyhľadávačom alebo prehliadaču oznamuje, že aktuálny odkaz bol aktualizovaný a mal by sa aktualizovať v jeho databáze, napríklad v záložkách prehliadača. Ak otvoríme konfiguračný súbor, nájdeme v ňom dve časti servera, pre stránky https a stránky http. V sekcii http jednoducho presmerujete všetky požiadavky na https pomocou inštrukcie return a v druhej sekcii všetko spracujete. Napríklad prvá sekcia:
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;
...
}
Druhá sekcia sleduje požiadavky na porte 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;
...
}
Ako vidíte, syntax je v tomto prípade veľmi jednoduchá a jasná. Inštrukcia return nám teda umožňuje vrátiť potrebné kódy odpovede servera. Vraciame teda kód 301, trvalé presmerovanie a adresu URL, na ktorú používateľa presmerujeme. Okrem direktívy return môžete použiť aj inštrukciu rewrite, ktorá vykonáva presne tie isté činnosti:
rewrite ^/(.*)$ https://losst.com/$1 permanent;
V syntaxi regulárnych výrazov môžete namiesto návratu 301 pridať doménu. Takúto konštrukciu môžete použiť aj bez samostatného bloku servera:
if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}
Ďalej je potrebné súbor uložiť a skontrolovať konfiguráciu Nginx. Na tento účel sa používa:
$ sudo nginx -t
Ak je všetko v poriadku, reštartujte Nginx:
$ sudo systemctl restart nginx
Skontrolujte, akú odpoveď servera dostanete pomocou curl:
$ curl -I losst.ru
Alebo nechajte nástroj sledovať celú cestu presmerovania:
$ curl ILa losst.ru
Ako vidíte, konfigurácia presmerovania na https nginx je pomerne jednoduchá, práca sa vykonáva pridaním jedného riadku do konfiguračného súboru, zvyšok sú všetky dodatočné parametre.