Tento tutoriál vám ukáže, jak povolit protokol HTTP/2 s Nginx na serveru Debian 8 pro urychlení načítání webových stránek. Existují 2 požadavky.
- Nginx verze 1.9.5 nebo vyšší, postavená s OpenSSL 1.0.2
- HTTPS povoleno
Pojďme se na to vypořádat jeden po druhém.
Instalace Nginx z Jessie Backports Repo
ALPN (Application Layer Protocol Negotiation) je rozšíření TLS, které umožňuje serverům vyjednávat protokol HTTP/2 s webovými prohlížeči. Bez ALPN nelze navázat spojení HTTP/2, i když webový server i webový prohlížeč podporují HTTP/2. Knihovna OpenSSL podporuje ALPN s verzí 1.0.2.
Debian 8 má OpenSSL 1.0.1. Chcete-li zkontrolovat verzi OpenSSL, spusťte
openssl version
Vezměte prosím na vědomí, že do systému není potřeba instalovat OpenSSL 1.0.2. Potřebujeme pouze Nginx 1.9.5 nebo vyšší, který je postaven s OpenSSL 1.0.2. Nginx přidal podporu pro HTTP/2 ve verzi 1.9.5. Výchozí úložiště Debian 8 má Nginx 1.6.2. Naštěstí Jessie backports repo poskytuje Nginx 1.10.3 postavený s OpenSSL 1.0.2l.
Chcete-li přidat toto úložiště, vytvořte soubor se zdrojovým seznamem.
sudo nano /etc/apt/sources.list.d/jessie-backports.list
Přidejte do tohoto souboru následující řádek.
deb http://ftp.debian.org/debian jessie-backports main
Uložte a zavřete soubor. Poté aktualizujte index balíčku a nainstalujte Nginx z úložiště Jessie backports.
sudo apt update sudo apt -t jessie-backports install nginx
Zkontrolujte verzi Nginx a nakonfigurujte parametry.
sudo nginx -V
Výstup:
nginx version: nginx/1.10.3 built with OpenSSL 1.0.2l 25 May 2017 TLS SNI support enabled
Úložiště Nginx.org obsahuje nejnovější verzi Nginx pro Debian 8. Tento balíček je však postaven na OpenSSL 1.0.1, takže nepodporuje ALPN.
Instalace certifikátu SSL na Debian 8
Můžeme nainstalovat bezplatný certifikát SSL vydaný společností Let’s Encrypt. Nejprve nainstalujte klienta Let’s Encrypt (Certbot) na Debian 8 z úložiště Jessie Backports. Python-certbot-nginx
je plugin Nginx pro Certbot.
sudo apt install -t jessie-backports certbot python-certbot-nginx
Nyní, pokud jste nakonfigurovali virtuálního hostitele Nginx, použijte plugin Nginx k získání a instalaci certifikátu SSL, jak je uvedeno níže
sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address
Vysvětlení:
--nginx
:Použijte plugin Nginx--agree-tos
:Souhlasíte s podmínkami služby Let’s Encrypt--redirect
:Automaticky přesměrovat veškerý provoz HTTP na HTTPS pro nově ověřený vhost.--staple-ocsp
:Povolí sešívání OCSP--must-staple
:Přidá do certifikátu rozšíření OCSP Must Staple--email
:E-mail použitý pro registraci a kontakt pro obnovení
Povolení protokolu HTTP2
Ve výchozím nastavení Certbot nekonfiguruje HTTP/2 pro Nginx. Chcete-li povolit HTTP/2, upravte soubor virtuálního hostitele Nginx. Najděte následující direktivu.
listen 443 ssl;
Potom přidejte http2 jako níže.
listen 443 ssl http2;
Uložte a zavřete soubor. Znovu načtěte Nginx.
sudo systemctl reload nginx
Test
Jak víte, že váš web skutečně používá protokol HTTP2?
- Ve Firefoxu nebo Google Chrome načtěte stránku svého webu a stiskněte
Ctrl+Shift+I
otevřete Nástroje pro vývojáře , klikněte na Síť tab. Můžete vidět protokol používaný pro vaši doménu. - Do prohlížeče Google Chrome můžete také nainstalovat rozšíření HTTP/2 a SPDY Indicator.
- Nainstalujte si do Firefoxu rozšíření HTTP/2 Indicator.
- Online testovací nástroj HTTP/2 od KeyCDN vám může zjistit, zda jsou na vašem webu podporovány protokoly HTTP/2 a ALPN.
Upozorňujeme, že možná budete muset vymazat mezipaměť prohlížeče, protože objekty uložené v mezipaměti mohou být omylem označeny protokolem HTTP/1.1.
Jak povolit server Push
HTTP/2 přichází s funkcí zvanou server push , která umožňuje webovému serveru odesílat zdroje, o které webový prohlížeč nepožádal, ale jsou potřebné pro načítání webových stránek. Pokud například webový prohlížeč požaduje dokument HTML, pak webový server ví, že klient bude potřebovat přidružený soubor CSS a pošle jej spolu s dokumentem HTML, čímž odpadá nutnost, aby webový prohlížeč posílal požadavek na CSS, takže jedno kolo výlet se zkrátí.
Zde jako příklad používám WordPress. Následující zdroje jsou běžně potřebné pro web WordPress.
- style.css:hlavní šablona stylů umístěná v kořenovém adresáři motivu.
- jquery.js:knihovna JQuery
- jquery-migrate.min.js:starý JQuery
- wp-embed.min.js:pro vkládání videí
Chcete-li tyto prostředky odeslat klientům, přidejte do server
následující direktivy blok. Nahraďte dvacet sedmnáct vlastním názvem tématu WordPress.
http2_push /wp-content/themes/twentyseventeen/style.css; http2_push /wp-includes/js/jquery/jquery.js; http2_push /wp-includes/js/jquery/jquery-migrate.min.js; http2_push /wp-includes/js/wp-embed.min.js;
Uložte a zavřete soubor. Poté restartujte Nginx, aby se změny projevily.
sudo systemctl restart nginx
Všimněte si, že do functions.php
musíte přidat následující kód soubor k odstranění čísla verze ze souborů WordPress CSS a JavaScript. Když se aktualizuje WordPress, server push nebude fungovat, pokud je k těmto souborům přidáno číslo verze.
// Remove WP Version From Styles add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 ); // Remove WP Version From Scripts add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 ); // Function to remove version numbers function sdt_remove_ver_css_js( $src ) { if ( strpos( $src, 'ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; }
Testování serveru Push
V prohlížeči Google Chrome načtěte stránku a stiskněte Ctrl+Shift+I
otevřete nástroje pro vývojáře a klikněte na kartu Síť. Stiskněte F5 pro opětovné načtení. Jak můžete vidět na snímku obrazovky níže, server push funguje na jednom z mých webových stránek. Pokud vidíte „z mezipaměti“, klikněte na něj pravým tlačítkem, vymažte mezipaměť prohlížeče a znovu načtěte.
Vylepšení
Plugin Certbot Nginx stále není vyspělý. Dostal jsem B v testu SSL Labs po použití pluginu Nginx kvůli použití slabých parametrů výměny klíčů. Konfigurační generátor Mozilla SSL je dobrý nástroj, který vám pomůže vytvořit moderní konfigurace SSL.
A je to! Doufám, že vám tento návod pomohl povolit HTTP/2 s Nginx na serveru Debian 8. Jako vždy, pokud pro vás byl tento příspěvek užitečný, přihlaste se k odběru našeho bezplatného zpravodaje.