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:
- Zpoždění při načítání webových stránek kvůli dlouhým HTTP hlavičkám.
- HTTP/1.1 je schopen odeslat pouze jeden požadavek pro každý soubor na připojení TCP.
- 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:
- 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.
- 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.
- Rychlejší webové výkony, které následně vedou k lepšímu hodnocení SEO.
- Vylepšené zabezpečení, protože většina běžných prohlížečů načítá HTTP/2 přes HTTPS.
- 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.