Způsoby platby Abuse

Jak přesměrovat z http na https Nginx

22.03.2021, 19:19

Moderní trendy na internetu vyžadují používání zabezpečeného komunikačního protokolu https. Při migraci je tedy důležité, aby veškerý provoz, který přichází na port http, byl automaticky přesměrován na https. To je důležitá podmínka nejen pro weby, které mohou přijít o část provozu, ale také pro uživatele, aby nikdo nemohl prolomit nezabezpečené spojení. Dále se podíváme, jak nakonfigurovat přesměrování z http na https Nginx.

Jak přesměrovat z http na https Nginx

Doporučujeme použít přesměrování se stavovým kódem 301. To vyhledávačům nebo prohlížeči říká, že aktuální odkaz byl aktualizován a měl by být aktualizován v jeho databázi, například v záložkách prohlížeče. Otevřeme-li konfigurační soubor, najdeme v něm dvě sekce serveru, pro stránky https a stránky http. V sekci http jednoduše přesměrujete všechny požadavky na https pomocí instrukce return a v druhé sekci vše zpracujete. Například v první sekci:

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;
...
}

Jak přesměrovat z http na https Nginx

Druhá sekce sleduje požadavky na portu 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;
...
}

Jak vidíte, syntaxe je v tomto případě velmi jednoduchá a jasná. Instrukce return nám tedy umožňuje vracet potřebné kódy odpovědí serveru. Vracíme tedy kód 301, trvalé přesměrování a adresu URL, na kterou budeme uživatele přesměrovávat. Kromě direktivy return můžete použít i instrukci rewrite, která provádí naprosto stejné akce:

rewrite ^/(.*)$ https://losst.com/$1 permanent;

V syntaxi regulárních výrazů můžete místo návratu 301 přidat doménu. Takovou konstrukci můžete použít i bez samostatného serverového bloku:

if ($host ~* ^(losst.ru|www.losst.ru)$ ){
rewrite ^/(.*)$ https://losst.ru/$1 permanent;
}

Dále je třeba soubor uložit a zkontrolovat konfiguraci Nginx. K tomu slouží např:

$ sudo nginx -t

настройка Nginx

Pokud je vše v pořádku, restartujte Nginx:

$ sudo systemctl restart nginx

Zkontrolujte, jakou odpověď serveru dostanete pomocí curl:

$ curl -I losst.ru

настройка Nginx

Nebo nechte nástroj sledovat celou cestu přesměrování:

$ curl ILa losst.ru

настройка Nginx

Jak vidíte, konfigurace přesměrování na https nginx je poměrně jednoduchá, práce se provádí přidáním jednoho řádku do konfiguračního souboru, zbytek jsou všechny dodatečné parametry.