GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit Nginx s podporou HTTP/2 na Ubuntu 18.04

Nginx je robustní, rychlý, spolehlivý a dynamický webový server s otevřeným zdrojovým kódem oblíbený pro obsluhu stránek s vysokou návštěvností. Kromě toho je dobře známý pro svou snadnou konfiguraci, vysokou škálovatelnost a podporu pro nesčetné množství protokolů.
Mezi protokoly podporované Nginx patří nový protokol HTTP/2, jehož hlavní výhodou oproti svému předchůdci HTTP 1.1 je vysoká přenosová rychlost požadovaná pro obsahově bohaté webové stránky.

V této příručce se ponoříme do instalace a nastavení zabezpečeného serveru Nginx s podporou HTTP/2:

Předpoklady

Pro začátek projdeme kontrolou letu a uvidíme, zda máme následující

  • Instance serveru Ubuntu 18.04 LTS
  • Nginx verze 1.9.5 nebo vyšší (Pro ověření verze Nginx spusťte nginx -v ), přečtěte si Instalovat Nginx na Ubuntu 18.04.
  • OpenSSL verze 1.0.2 nebo vyšší (Zkontrolujte verzi pomocí openssl verze)
  • Běžný uživatel bez oprávnění root s právy sudo
  • Plně kvalifikovaný název domény (FQDN) V tomto případě použijeme crazytechgeek.info zakoupené od GoDaddy.

    Záznam A názvu domény by měl ukazovat na IP adresu serveru. crazytechgeek.info bylo nasměrováno na 216.200.116.207.

  • Certifikát SSL (Buď certifikát podepsaný svým držitelem, nebo certifikát Let’s encrypt SSL. Podobně si můžete zakoupit jeden od jiného poskytovatele.

Krok 1 – Povolení podpory HTTP /2.0

Pro začátek se předpokládá, že jste nakonfigurovali blok serveru Nginx na

/etc/nginx/sites-available/your_domain

V našem případě je blok serveru /etc/nginx/sites-available/crazytechgeek.info .

Pomocí svého oblíbeného textového editoru otevřete soubor bloku serveru a vyhledejte listen direktiva, jak je znázorněno

První direktiva označuje připojení IPv6, zatímco druhá je určena pro připojení IPv4

Nyní upravíme každou direktivu tak, aby obsahovala http2 příznak, jak je znázorněno

Toto bude instruovat Nginx, aby používal HTTP/2 v podporovaných prohlížečích

Uložte konfigurační soubor a ukončete editor.

Dále otevřete /etc/nginx/sites-available/default soubor a proveďte stejné změny

Uložte a ukončete textový editor.

Abyste se ujistili, že v žádném ze souborů Nginx nejsou žádné syntaktické chyby, spusťte níže uvedený příkaz

$ sudo nginx -t

Výstup

Krok 2 – Vymazání starých a nezabezpečených šifer

Aby HTTP/2 fungovalo podle očekávání, musíme se vyhnout používání starých a nezabezpečených šifer, které byly na černé listině HTTP/2. Šifrovací sady jsou kryptografické algoritmy, které určují, jak má být provoz šifrován.

Pokud byl k získání certifikátů použit certbot, pak šifry v cestě /etc/letsencrypt/options-ssl-nginx.conf nejsou dostatečně zabezpečené pro HTTP/2. Úprava tohoto souboru však způsobí pouze chyby a zabrání certbotu použít aktualizace. To znamená, že musíme specifikovat náš seznam šifer a instruovat Nginx, aby soubor ignoroval

Otevřete konfigurační soubor pro váš blok doménového serveru Nginx

$ vim /etc/nginx/sites-available/crazytechgeek.info

Komentujte tento řádek

# include /etc/letsencrypt/options-ssl-nginx.conf;

Pod tento řádek připojte řádek níže a definujte povolené šifry

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Uložte soubor a ukončete textový editor

Pokud byl použit certifikát s vlastním přiřazením nebo certifikát třetí strany, otevřete soubor

/etc/nginx/snippets/ssl-params.conf 
$ sudo vim /etc/nginx/snippets/ssl-params.conf

Vyhledejte řádek, jak je znázorněno níže

...
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
...

Upravte soubor odpovídajícím způsobem, jak je znázorněno níže


...
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Nakonec uložte a ukončete konfigurační soubor

Znovu zkontrolujte případné chyby konfigurace Nginx

$ sudo nginx -t

Pokud vše proběhlo v pořádku, měli byste vidět výstup níže, jak je uvedeno výše

Restartujte Nginx

$ sudo systemctl reload nginx

V dalším kroku otestujeme, zda náš server dokáže serverovat HTTP/2 stránky

Krok 3 – Testování, zda je povolen HTTP/2

Nyní otestujeme, zda HTTP běží a je povoleno na našem webovém serveru Nginx
Ve svém terminálu spusťte níže uvedený příkaz

curl -I -L https://your_domain

V našem případě to bude

curl -I -L https://crazytechgeek.info

Výstup

Případně můžete ověřit HTTP/2 otevřením nástrojů pro vývojáře Google klepnutím na

Ctrl + Shift + I 

Dále klikněte na Network Tab.

V Protocol ve sloupci, nezapomeňte najít štítek h2

Krok 4 – Nasazení HTTP Strict Transport Security

A konečně, i když velmi jasně víme, že náš server může přesměrovat požadavky HTTP na HTTPS, chceme povolit HSTS HTTP Strict Transport Security, aby taková přesměrování eliminovala. Pokud prohlížeč narazí na hlavičku HSTS, nebude se po určitou dobu pokoušet znovu připojit k serveru. IT si bude vyměňovat data pouze prostřednictvím zabezpečeného a šifrovaného protokolu HTTPS.

Chcete-li toho dosáhnout, otevřete konfigurační soubor Nginx

$ vim /etc/nginx/nginx.conf

Připojte řádek níže

add_header Strict-Transport-Security "max-age=15768000" always;

max-age se nastavuje v sekundách

Pokud má váš web subdomény a chcete použít HSTS na všechny z nich, připojte includeSubDomains vlajka na konci řádku

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

Uložte a ukončete konfigurační soubor.

Jako vždy zkontrolujte, zda nejsou nějaké chyby

$ sudo nginx -t


Nakonec restartujte Nginx

$ sudo systemctl restart nginx

Závěr

V tuto chvíli váš server Nginx nyní obsluhuje stránky HTTP/2.
Můžete také navštívit https://tools.keycdn.com/http2-test otestujte stav HTTP/2 vašeho webu, jak je uvedeno

Případně můžete také navštívit tyto stránky

https://http2.pro/

Pro podrobnější výsledky použijte

https://www.ssllabs.com/ssltest/


Linux
  1. Jak nainstalovat HTTP Git Server s Nginx na Ubuntu 16.04

  2. Jak nastavit Apache s HTTP/2 na Ubuntu 16.04

  3. Jak nastavit Nginx s podporou HTTP/2 na Debianu 9

  1. Jak nastavit bloky serveru Nginx na Ubuntu 20.04

  2. Jak nainstalovat HTTP Git Server s Nginx na Ubuntu 20.04

  3. Jak nastavit Nginx jako reverzní proxy na Ubuntu 20.04

  1. Jak povolit HTTP/2 v Nginx

  2. Jak nainstalovat HTTP Git Server s Nginx na Ubuntu 18.04 LTS

  3. Jak nakonfigurovat HTTP/2 v Nginx na Ubuntu 20.04