GNU/Linux >> Znalost Linux >  >> Debian

Jak povolit protokol HTTP2 s Nginx na serveru Debian 8 Jessie

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.


Debian
  1. Jak nainstalovat Proxmox VE 4 na Debian 8 (Jessie)

  2. Jak nainstalovat HTTP Git Server s Nginx na Debian 11

  3. Jak vytvořit nginx pomocí modulu Google PageSpeed ​​na Debianu 8 (Jessie)

  1. Jak nainstalovat Nginx na Debian 8 (Jessie)

  2. Jak povolit HTTP2 v NGINX

  3. Jak povolit Nginx s PHP-FPM na Plesk

  1. Jak povolit SSH na Debianu 9 nebo 10

  2. Jak nastavit FTP server s VSFTPD na Debianu 9

  3. Jak nainstalovat WonderCMS s Nginx na Debian 11