Zoeken op website

Hoe HTTP/2 in Apache op Ubuntu in te schakelen


Sinds het begin van het World Wide Web (www) is het HTTP-protocol in de loop der jaren geëvolueerd om veilige en snelle digitale inhoud te leveren over de hele wereld. internetten.

De meest gebruikte versie is HTTP 1.1 en hoewel deze boordevol functieverbeteringen en prestatie-optimalisaties zit om de tekortkomingen van eerdere versies aan te pakken, blijft deze achter bij enkele andere opvallende kenmerken die zijn aangepakt door de >HTTP/2.

Wat zijn de beperkingen van HTTP/1.1?

Het HTTP/1.1-protocol is beladen met de volgende tekortkomingen die het minder ideaal maken, vooral bij het draaien van webservers 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 voor elke TCP-verbinding één verzoek verwerkt, worden browsers gedwongen een stortvloed aan parallelle TCP-verbindingen te verzenden om de verzoeken gelijktijdig te verwerken. Dit leidt tot TCP-congestie en uiteindelijk tot bandbreedteverspilling en netwerkdegradatie.

De bovengenoemde problemen leidden vaak tot prestatievermindering en hoge overheadkosten bij bandbreedtegebruik. 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 clientverzoeken minimaliseert en daardoor het bandbreedteverbruik verlaagt. Het resulterende effect is een hoge laadsnelheid van de pagina.
  2. Meerdere verzoeken multiplexen via één TCP-verbinding. Zowel de server als de client kunnen een HTTP-verzoek opsplitsen in meerdere frames en deze aan de andere kant hergroeperen.
  3. Snellere webprestaties die bijgevolg leiden tot een betere SEO-ranking.
  4. Verbeterde beveiliging omdat de meeste reguliere browsers HTTP/2 via HTTPS laden.
  5. HTTP/2 wordt als mobielvriendelijker beschouwd 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 aan de slag gaat, moet u ervoor zorgen dat u HTTPS op de Apache-webserver inschakelt voordat u HTTP/2 inschakelt. Dit komt omdat alle reguliere webbrowsers HTTP/2 via HTTPS ondersteunen. Ik heb een domeinnaam die verwijst naar een instantie op Ubuntu 20.04 waarop een Apache-server draait, beveiligd met het Let's Encrypt-certificaat.

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

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

apache2 -v

Uit de uitvoer kun je zien dat we de nieuwste versie gebruiken, namelijk Apache 2.4.41 op het moment dat dit artikel werd geschreven.

Schakel HTTP/2 in op een virtuele Apache-host

Om te beginnen moet u eerst bevestigen dat de webserver HTTP/1.1 gebruikt. U kunt dit in een browser doen door het gedeelte met ontwikkelaarstools in Google Chrome te openen met de combinatie Ctrl +SHIFT + I. Klik op het tabblad ‘Netwerk’ en zoek de kolom ‘Protocol’.

Schakel vervolgens de HTTP/2-module in op Ubuntu door de volgende opdracht uit te voeren.

sudo a2enmod http2

Zoek en bewerk vervolgens uw SSL virtuele hostbestand. Als u HTTPS heeft ingeschakeld met Let's Encrypt, wordt er een nieuw bestand gemaakt met een le-ssl.conf achtervoegsel.

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

Voeg de onderstaande instructie in na de tag .

Protocols h2 http/1.1

Om de wijzigingen op te slaan, start u de Apache-webserver opnieuw op.

sudo systemctl restart apache2

Om te controleren of HTTP/2 is ingeschakeld, haalt u de HTTP-headers op met behulp van de volgende curl-opdracht, zoals weergegeven.

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

U zou de getoonde uitvoer moeten krijgen.

HTTP/2 200

Laad uw site opnieuw in de browser. Ga vervolgens terug naar de ontwikkelaarstools en bevestig HTTP/2, aangegeven met het h2-label in de kolom ‘Protocol’.

Bij gebruik van de mod_php-module met Apache

Als u Apache gebruikt naast de mod_php module, 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 wordt ondersteund door HTTP/2.

Als je bijvoorbeeld de module PHP 7.4 mod_php gebruikt, schakel deze dan uit zoals weergegeven:

sudo a2dismod php7.4 

Schakel daarna de prefork MPM module uit.

sudo a2dismod mpm_prefork

Nadat u de modules heeft uitgeschakeld, schakelt u vervolgens de modules Event MPM, Fast_CGI en setenvif in, zoals weergegeven.

sudo a2enmod mpm_event proxy_fcgi setenvif

Installeer PHP-FPM op Ubuntu

Installeer en start vervolgens PHP-FPM zoals weergegeven.

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

Schakel vervolgens PHP-FPM in om te starten tijdens het opstarten.

sudo systemctl enable php7.4-fpm

Schakel vervolgens PHP-FPM in als de PHP-handler van Apache en start de Apache-webserver opnieuw op om de wijzigingen door te voeren.

sudo a2enconf php7.4-fpm

Schakel HTTP/2-ondersteuning in Apache Ubuntu in

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

sudo a2enmod http2

Start Apache opnieuw om alle wijzigingen te synchroniseren.

sudo systemctl restart apache2

Ten slotte kunt u testen of uw server het HTTP/2-protocol gebruikt met behulp van de curl-opdracht, zoals weergegeven.

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

U kunt er ook voor kiezen om de ontwikkelaarstools in de Google Chrome-browser te gebruiken om te verifiëren, zoals eerder gedocumenteerd. We zijn aan het einde van deze handleiding gekomen. We hopen dat u de informatie waardevol heeft gevonden en dat u HTTP/2 gemakkelijk en gemakkelijk op Apache kunt inschakelen.