Sådan aktiveres HTTP/2 i Apache på Ubuntu


Siden starten af World Wide Web (www) har HTTP-protokollen udviklet sig gennem årene til at levere sikkert og hurtigt digitalt indhold over internettet.

Den mest anvendte version er HTTP 1.1, og selvom den pakker med forbedringer af funktioner og ydeevneoptimeringer for at afhjælpe manglerne i tidligere versioner, mangler den nogle få andre vigtige funktioner, der er blevet behandlet af HTTP/2.

HTTP/1.1-protokollen er fyldt med følgende mangler, der gør den mindre ideel, især når du kører webservere med høj trafik:

  1. Forsinkelser i indlæsning af websider på grund af lange HTTP-overskrifter.
  2. HTTP/1.1 kan kun sende en anmodning for hver fil pr. TCP-forbindelse.
  3. Da HTTP/1.1 behandler en anmodning for hver TCP-forbindelse, er browsere tvunget til at sende en strøm af parallelle TCP-forbindelser for samtidig at behandle anmodningerne. Dette fører til TCP-overbelastning og i sidste ende spild af båndbredde og nedbrydning af netværk.

Ovennævnte problemer førte ofte til forringelse af ydeevnen og høje omkostninger ved båndbreddeforbrug. HTTP/2 kom ind i billedet for at løse disse problemer og er nu fremtiden for HTTP-protokoller.

Det giver følgende fordele:

  1. Header-komprimering, der minimerer klientforespørgsler og derved sænker båndbreddeforbruget. Den resulterende effekt er hurtige sideindlæsningshastigheder.
  2. Multiplexing af flere anmodninger over en TCP-forbindelse. Både serveren og klienten kan nedbryde en HTTP-anmodning i flere rammer og omgruppere dem i den anden ende.
  3. Hurtigere webpræstationer, som følgelig fører til bedre SEO-placering.
  4. Forbedret sikkerhed, da de fleste almindelige browsere indlæser HTTP/2 over HTTPS.
  5. HTTP/2 betragtes som mere mobilvenlig takket være headerkomprimeringsfunktionen.

Når det er sagt, vil vi aktivere HTTP/2 på Apache på Ubuntu 20.04 LTS og Ubuntu 18.04 LTS.

Før du går i gang, skal du sikre dig, at du aktiverer HTTPS på Apache-webserveren, før du aktiverer HTTP/2. Dette skyldes, at alle almindelige webbrowsere understøtter HTTP/2 via HTTPS. Jeg har et domænenavn peget på en forekomst på Ubuntu 20.04, der kører Apache-server sikret ved hjælp af Lad os kryptere certifikat.

Det anbefales også, at du har Apache 2.4.26 og nyere versioner til produktionsservere, der har til hensigt at skifte til HTTP/2.

For at kontrollere den version af Apache, du kører, skal du udføre kommandoen:

$ apache2 -v

Fra output kan du se, at vi bruger den nyeste version, som er Apache 2.4.41 på tidspunktet for nedskrivning af denne artikel.

Aktivér HTTP/2 på en Apache Virtual Host

For at komme i gang skal du først bekræfte, at webserveren kører HTTP/1.1. Du kan gøre dette i en browser ved at åbne afsnittet om udviklerværktøjer i Google Chrome ved hjælp af Ctrl + SHIFT + I kombinationen. Klik på fanen "Netværk", og find kolonnen "Protokol".

Derefter skal du aktivere HTTP/2-modulet på Ubuntu ved at køre følgende kommando.

$ sudo a2enmod http2

Find derefter og rediger din SSL-virtuelle værtsfil, hvis du har aktiveret HTTPS ved hjælp af Lad os kryptere, oprettes en ny fil med et le-ssl.conf-suffiks.

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

Indsæt direktivet nedenfor efter -tagget.

Protocols h2 http/1.1

For at gemme ændringerne, genstart Apache webserver.

$ sudo systemctl restart apache2

For at kontrollere, om HTTP/2 er aktiveret, skal du hente HTTP-headere ved hjælp af følgende curl-kommando som vist.

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

Du skal få vist output.

HTTP/2 200

Genindlæs dit websted i browseren. Gå derefter tilbage til udviklerværktøjerne og bekræft HTTP/2 betegnet med h2 -etiketten i kolonnen 'Protokol'.

Når du bruger mod_php-modul med Apache

Hvis du kører Apache sammen med mod_php-modulet, skal du skifte til PHP-FPM. Dette skyldes, at mod_php-modulet bruger prefork MPM-modulet, som ikke understøttes af HTTP/2. Du skal afinstallere prefork MPM og skifte til mpm_event-modulet, som understøttes af HTTP/2.

Hvis du f.eks. Bruger PHP 7.4 mod_php-modulet, skal du deaktivere det som vist:

$ sudo a2dismod php7.4 

Deaktiver derefter MPM-modulet fra Prefork.

$ sudo a2dismod mpm_prefork

Efter at have deaktiveret modulerne, skal du derefter aktivere Event MPM, Fast_CGI og setenvif-modulerne som vist.

$ sudo a2enmod mpm_event proxy_fcgi setenvif

Installer PHP-FPM på Ubuntu

Dernæst skal du installere og starte PHP-FPM som vist.

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

Aktivér derefter PHP-FPM for at starte ved starttidspunktet.

$ sudo systemctl enable php7.4-fpm

Derefter skal du aktivere PHP-FPM som Apache's PHP-handler og genstarte Apache-webserveren for at foretage ændringerne.

$ sudo a2enconf php7.4-fpm

Aktivér HTTP/2-support i Apache Ubuntu

Aktiver derefter HTTP/2-modulet som før.

$ sudo a2enmod http2

Genstart Apache for at synkronisere alle ændringer.

$ sudo systemctl restart apache2

Endelig kan du teste, om din server bruger HTTP/2-protokollen ved hjælp af curl-kommandoen som vist.

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

Du kan også vælge at bruge udviklerværktøjerne i Google Chrome-browseren til at bekræfte som tidligere dokumenteret. Vi er til slutningen af denne vejledning. Vi håber, du fandt oplysningerne værdifulde, og at du nemt kan aktivere HTTP/2 på Apache.