Hoe HTTP/2 inschakelen in Apache op Ubuntu

Sinds de oprichting van het World Wide Web (www), is het HTTP-protocol in de loop der jaren geëvolueerd om veilige en snelle digitale inhoud via het internet te leveren.

De meest gebruikte versie is HTTP 1.1 en hoewel het vol zit met functieverbeteringen en prestatieoptimalisaties om de tekortkomingen van eerdere versies aan te pakken, schiet het tekort in een paar andere belangrijke functies die zijn aangepakt door HTTP/2.

Wat zijn de beperkingen van HTTP/1.1?

Het HTTP/1.1-protocol kampt met de volgende tekortkomingen die het minder ideaal maken, vooral bij het draaien van web servers met veel verkeer:

  1. Vertragingen bij het laden van webpagina’s vanwege lange HTTP-headers.
  2. HTTP/1.1 kan slechts één verzoek per bestand per TCP-verbinding verzenden.
  3. Aangezien HTTP/1.1 één verzoek per TCP-verbinding verwerkt, worden browsers gedwongen om een stortvloed van parallelle TCP-verbindingen te verzenden om de verzoeken tegelijkertijd te verwerken. Dit leidt tot TCP-congestie en uiteindelijk tot verspilling van bandbreedte en netwerkdegradatie.

De bovengenoemde problemen leidden vaak tot prestatievermindering en hoge overheadkosten in het gebruik van bandbreedte. HTTP/2 kwam in beeld om deze problemen aan te pakken en is nu de toekomst voor HTTP-protocollen.

Voordelen van het gebruik van HTTP/2

Het biedt de volgende voordelen:

  1. Headercompressie die klantverzoeken minimaliseert en daardoor het bandbreedteverbruik verlaagt. Het resultaat is snelle laadsnelheden van pagina’s.
  2. Multiplexen van meerdere verzoeken over één TCP-verbinding. Zowel de server als de client kunnen een HTTP-verzoek opsplitsen in meerdere frames en deze aan de andere kant opnieuw groeperen.
  3. Snellere webprestaties die bijgevolg leiden tot een betere SEO-ranking.
  4. Verbeterde beveiliging omdat de meeste populaire browsers HTTP/2 laden via HTTPS.
  5. HTTP/2 wordt beschouwd als meer mobielvriendelijk dankzij de headercompressiefunctie.

Dat gezegd hebbende, gaan we HTTP/2 inschakelen op Apache op Ubuntu 20.04 LTS en Ubuntu 18.04 LTS.

Vereisten:

Voordat u begint, zorg ervoor dat u HTTPS inschakelt op de Apache-webserver voordat u HTTP/2 inschakelt. Dit komt doordat alle populaire webbrowsers HTTP/2 ondersteunen via HTTPS. Ik heb een domeinnaam gericht op een exemplaar op Ubuntu 20.04 dat de Apache-server draait beveiligd met Let’s Encrypt-certificaat.

Ook wordt aanbevolen dat u Apache 2.4.26 en latere versies hebt voor productieservers die van plan zijn over te schakelen naar HTTP/2.

Om de versie van Apache te controleren die u gebruikt, voert u het commando uit:

$ apache2 -v
Check Apache Version in Ubuntu

Vanuit de output kun je zien dat we de nieuwste versie gebruiken, namelijk Apache 2.4.41 op het moment van het schrijven van dit artikel.

Activeer HTTP/2 op een Apache Virtual Host

Begin met te bevestigen dat de webserver HTTP/1.1 gebruikt. Dit kun je in een browser doen door de ontwikkelaarstools te openen in Google Chrome met de toetsencombinatie Ctrl + SHIFT + I. Klik op het tabblad ‘Netwerk’ en zoek de ‘Protocol’ kolom op.

Confirm HTTP Protocol Version

Activeer vervolgens de HTTP/2 module op Ubuntu door het volgende commando uit te voeren.

$ sudo a2enmod http2
Enable HTTP/2 on Ubuntu

Zoek vervolgens en bewerk je SSL virtuele hostbestand, als je HTTPS hebt ingeschakeld met Let’s Encrypt, wordt er een nieuw bestand gemaakt met de toevoeging le-ssl.conf.

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

Voeg de onderstaande opdracht toe na de <VirtualHost *:443> tag.

Protocols h2 http/1.1
Enable HTTP/2 on Apache

Om de wijzigingen op te slaan, herstart je de Apache-webserver.

$ sudo systemctl restart apache2

Controleer of HTTP/2 is ingeschakeld door de HTTP-headers op te halen met de volgende curl-opdracht zoals getoond.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Support in Apache

Je zou de getoonde output moeten krijgen.

HTTP/2 200

Vernieuw vervolgens je site in de browser. Ga vervolgens terug naar de ontwikkelaarstools en bevestig HTTP/2, aangeduid met het label h2 in de ‘Protocol’ kolom.

Confirm HTTP/2 Protocol Version

Bij het gebruik van de mod_php-module met Apache

Als u Apache naast de mod_php-module uitvoert, moet u overschakelen naar PHP-FPM. Dit komt omdat de mod_php-module de prefork MPM-module gebruikt die niet wordt ondersteund door HTTP/2. U moet de prefork MPM verwijderen en overschakelen naar de mpm_event-module die zal worden ondersteund door HTTP/2.

Als u bijvoorbeeld de PHP 7.4 mod_php-module gebruikt, schakel deze dan uit zoals getoond:

$ sudo a2dismod php7.4 
Disable mod_php Module

Schakel daarna de prefork MPM-module uit.

$ sudo a2dismod mpm_prefork
Disable Prefork MPM in Apache

Schakel na het uitschakelen van de modules vervolgens de Event MPM, Fast_CGI en setenvif-modules in zoals getoond.

$ sudo a2enmod mpm_event proxy_fcgi setenvif
Enable Event MPM in Apache

Installeer PHP-FPM op Ubuntu

Installeer en start vervolgens PHP-FPM zoals getoond.

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

Schakel daarna PHP-FPM in om op te starten bij het opstarten.

$ sudo systemctl enable php7.4-fpm

Schakel vervolgens PHP-FPM in als Apache’s PHP-handler en herstart de Apache-webserver zodat de wijzigingen worden doorgevoerd.

$ sudo a2enconf php7.4-fpm

HTTP/2-ondersteuning inschakelen in Apache Ubuntu

Schakel vervolgens de HTTP/2-module in zoals eerder.

$ sudo a2enmod http2

Herstart Apache om alle wijzigingen te synchroniseren.

$ sudo systemctl restart apache2

Uiteindelijk kunt u testen of uw server het HTTP/2-protocol gebruikt met behulp van het curl-commando zoals getoond.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Protocol in Apache

Je kunt er ook voor kiezen om de ontwikkelaarstools te gebruiken in de Google Chrome-browser om te verifiëren zoals eerder gedocumenteerd. We zijn aan het einde van deze handleiding. We hopen dat je de informatie waardevol vond en dat je comfortabel HTTP/2 kunt inschakelen op Apache met gemak.

Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/