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:
- Vertragingen bij het laden van webpagina’s vanwege lange HTTP-headers.
- HTTP/1.1 kan slechts één verzoek per bestand per TCP-verbinding verzenden.
- 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:
- Headercompressie die klantverzoeken minimaliseert en daardoor het bandbreedteverbruik verlaagt. Het resultaat is snelle laadsnelheden van pagina’s.
- 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.
- Snellere webprestaties die bijgevolg leiden tot een betere SEO-ranking.
- Verbeterde beveiliging omdat de meeste populaire browsers HTTP/2 laden via HTTPS.
- 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

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.

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

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

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

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.

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

Schakel daarna de prefork MPM-module uit.
$ sudo a2dismod mpm_prefork

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

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

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/