Hypertext Transfer Protocol verze 2 (HTTP/2 ) je nejnovější verze protokolu HTTP, publikovaná jako standard IETF v RFC 7540 v roce 2015. Protokol je zaměřen na výkon; konkrétně, koncovým uživatelem vnímaná latence, využití sítě a zdrojů serveru. Jedním z hlavních cílů je umožnit použití jediného připojení z prohlížečů k webové stránce. Protokol je zpětně kompatibilní, takže metody HTTP, stavové kódy a sémantika jsou stejné jako u předchozích verzí protokolu. Apache má podporu HTTP/2 od verze 2.4.17. V tomto tutoriálu budu předpokládat, že již máte funkční konfiguraci TLS a že máte na své linuxové distribuci nainstalovanou požadovanou verzi Apache a že víte, jak používat Let's Encrypt, nebo víte, jak vydat certifikát s vlastním podpisem.
Tento výukový program byl testován na Debianu 10 , Debian 9, Ubuntu 20.04 LTS, a Ubuntu 18.04 LTS.
Předpoklady
Chcete-li povolit HTTP/2 v Apache, budete muset splnit následující požadavky:
- Nejprve musíte na svém serveru povolit HTTPS. Všechny hlavní prohlížeče umožňují použití HTTP/2 pouze přes HTTPS. Také TLS je vyžadována verze protokolu>=1.2 s moderními šifrovacími sadami.
- Dále se ujistěte, že používáte Apache 2.4.17 nebo vyšší, protože HTTP/2 je podporováno od této verze a výše.
- Zkontrolujte také, zda váš klient/prohlížeč skutečně podporuje HTTP/2.
Zakázat modul mod_php
Než budeme moci v dalším kroku přepnout modul Apache MPM na mpm_event, budeme muset deaktivovat starý režim mod_php a nahradit jej modernějším režimem PHP-FPM. Příkazy se liší pro každou verzi operačního systému, použijte prosím ty, které odpovídají vašemu nainstalovanému systému.
Ubuntu 20.04 LTS
sudo apt-get install php7.4-fpm
sudo a2dismod php7.4
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi
Debian 10
sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi
Ubuntu 18.04 LTS
sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi
Debian 9
sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi
Povolení Apache MPM, který je kompatibilní s HTTP/2
Ve výchozím nastavení bude Apache používat prefork MPM. Tento MPM není kompatibilní s HTTP/2, takže jej budeme muset nahradit modernějším modulem mpm_event.
Nejprve deaktivujeme modul mpm_prefork:
sudo a2dismod mpm_prefork
Poté povolíme modul mpm_event:
sudo a2enmod mpm_event
Povolení podpory HTTP/2 v Apache
Aby HTTP/2 fungovalo na Apache, musíte povolit a načíst moduly SSL a HTTP/2. Chcete-li tak učinit, můžete ve svém terminálu spustit následující:
sudo a2enmod ssl
a poté
sudo a2enmod http2
Chcete-li aktivovat tyto nové moduly, musíte spustit:
sudo systemctl restart apache2
Po povolení a načtení nezbytných modulů Apache přejděte do konfiguračního adresáře Apache a upravte konfiguraci Apache.
Chcete-li povolit HTTP/2 na svém webovém serveru Apache, přidejte do své globální konfigurace Apache nebo do konkrétního virtuálního hostitele jednu z následujících možností.
Protocols h2 http/1.1
Zde je minimální konfigurace virtuálního serveru, kterou lze použít k povolení HTTP/2 v některých virtuálních hostitelích:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public_html/example.com
SSLEngine on
SSLCertificateKeyFile /path/to/private.pem
SSLCertificateFile /path/to/cert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1
</VirtualHost>
Chcete-li zkontrolovat, zda váš server podporuje HTTP/2, můžete použít vývojářské nástroje prohlížeče. Níže jsou snímky obrazovky z prohlížečů Google Chrome a Apple Safari, které ukazují HTTP/2 v akci na https://example.com doména.
Chrome
Safari
Odkazy
- RFC 7540
- HTTP/2