Vyhledávání na webu

Jak povolit HTTP/2 v Apache na Ubuntu


Od vzniku World Wide Web (www) se protokol HTTP v průběhu let vyvíjel, aby poskytoval bezpečný a rychlý digitální obsah přes Internet.

Nejrozšířenější verzí je HTTP 1.1, a přestože obsahuje vylepšení funkcí a optimalizace výkonu, které řeší nedostatky dřívějších verzí, zaostává za několika dalšími významnými funkcemi, kterými se zabývá HTTP/2.

Jaká jsou omezení HTTP/1.1?

Protokol HTTP/1.1 je plný následujících nedostatků, kvůli kterým je méně ideální zejména při provozování webových serverů s vysokým provozem:

  1. Zpoždění při načítání webových stránek kvůli dlouhým HTTP hlavičkám.
  2. HTTP/1.1 je schopen odeslat pouze jeden požadavek pro každý soubor na připojení TCP.
  3. Vzhledem k tomu, že HTTP/1.1 zpracovává jeden požadavek na každé TCP spojení, jsou prohlížeče nuceny posílat záplavu paralelních TCP spojení, aby požadavky zpracovávaly současně. To vede k zahlcení TCP a v konečném důsledku plýtvání šířkou pásma a degradaci sítě.

Výše uvedené problémy často vedly ke snížení výkonu a vysokým režijním nákladům při využití šířky pásma. HTTP/2 přišel na scénu, aby vyřešil tyto problémy, a je nyní budoucností protokolů HTTP.

Výhody použití HTTP/2

Nabízí následující výhody:

  1. Komprese záhlaví, která minimalizuje požadavky klientů a tím snižuje spotřebu šířky pásma. Výsledkem je vysoká rychlost načítání stránky.
  2. Multiplexování několika požadavků přes jedno TCP spojení. Server i klient mohou rozdělit požadavek HTTP do více rámců a přeskupit je na druhém konci.
  3. Rychlejší webové výkony, které následně vedou k lepšímu hodnocení SEO.
  4. Vylepšené zabezpečení, protože většina běžných prohlížečů načítá HTTP/2 přes HTTPS.
  5. HTTP/2 je považováno za vhodnější pro mobily díky funkci komprese záhlaví.

To znamená, že povolíme HTTP/2 na Apache na Ubuntu 20.04 LTS a Ubuntu 18.04 LTS.

Předpoklady:

Než začnete, ujistěte se, že jste povolili HTTPS na webovém serveru Apache, než povolíte HTTP/2. Je to proto, že všechny běžné webové prohlížeče podporují HTTP/2 než HTTPS. Mám název domény nasměrovaný na instanci na Ubuntu 20.04, na které běží server Apache zabezpečený pomocí certifikátu Let’s Encrypt.

Také se doporučuje, abyste měli Apache 2.4.26 a novější verze pro produkční servery, které mají v úmyslu přejít na HTTP/2.

Chcete-li zkontrolovat verzi Apache, kterou používáte, spusťte příkaz:

apache2 -v

Z výstupu můžete vidět, že používáme nejnovější verzi, což je v době psaní tohoto článku Apache 2.4.41.

Povolte HTTP/2 na virtuálním hostiteli Apache

Chcete-li začít, nejprve se ujistěte, že webový server běží HTTP/1.1. To lze provést v prohlížeči otevřením sekce nástrojů pro vývojáře v Google Chrome pomocí kombinace Ctrl + SHIFT + I. Klikněte na kartu „Síť“ a vyhledejte sloupec „Protokol“.

Dále povolte modul HTTP/2 na Ubuntu spuštěním následujícího příkazu.

sudo a2enmod http2

Dále vyhledejte a upravte soubor virtuálního hostitele SSL. Pokud jste povolili HTTPS pomocí Let's Encrypt, vytvoří se nový soubor s le-ssl.conf přípona.

sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

Vložte direktivu níže za značku .

Protocols h2 http/1.1

Chcete-li uložit změny, restartujte webový server Apache.

sudo systemctl restart apache2

Chcete-li zkontrolovat, zda je povoleno HTTP/2, načtěte záhlaví HTTP pomocí následujícího příkazu curl.

curl -I --http2 -s https://domain.com/ | grep HTTP

Měli byste dostat zobrazený výstup.

HTTP/2 200

V prohlížeči znovu načtěte svůj web. Poté se vraťte do vývojářských nástrojů a potvrďte HTTP/2 označený štítkem h2 ve sloupci „Protokol“.

Při použití modulu mod_php s Apache

Pokud používáte Apache spolu s modulem mod_php, musíte přejít na PHP-FPM. Je to proto, že modul mod_php používá prefork modul MPM, který není podporován HTTP/2. Musíte odinstalovat prefork MPM a přepnout na modul mpm_event, který bude podporován HTTP/2.

Pokud například používáte modul PHP 7.4 mod_php, deaktivujte jej podle obrázku:

sudo a2dismod php7.4 

Poté vypněte modul MPM prefork.

sudo a2dismod mpm_prefork

Po deaktivaci modulů dále povolte moduly Event MPM, Fast_CGI a setenvif, jak je znázorněno.

sudo a2enmod mpm_event proxy_fcgi setenvif

Nainstalujte PHP-FPM na Ubuntu

Dále nainstalujte a spusťte PHP-FPM podle obrázku.

sudo apt install php7.4-fpm 
sudo systemctl start php7.4-fpm

Poté povolte PHP-FPM, aby se spustil při spouštění.

sudo systemctl enable php7.4-fpm

Dále povolte PHP-FPM jako obslužný program PHP Apache a restartujte webový server Apache, aby se změny projevily.

sudo a2enconf php7.4-fpm

Povolte podporu HTTP/2 v Apache Ubuntu

Poté povolte modul HTTP/2 jako dříve.

sudo a2enmod http2

Restartujte Apache pro synchronizaci všech změn.

sudo systemctl restart apache2

Nakonec můžete otestovat, zda váš server používá protokol HTTP/2 pomocí příkazu curl, jak je znázorněno na obrázku.

curl -I --http2 -s https://domain.com/ | grep HTTP

Můžete se také rozhodnout použít k ověření nástroje pro vývojáře v prohlížeči Google Chrome, jak bylo popsáno dříve. Musíme do konce této příručky. Doufáme, že pro vás byly informace cenné a že můžete pohodlně a snadno povolit HTTP/2 na Apache.