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.infozakoupené 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/ 
 