Slik aktiverer du HTTP/2 i Apache på Ubuntu


Siden begynnelsen av World Wide Web (www), har HTTP-protokollen utviklet seg gjennom årene for å levere sikkert og raskt digitalt innhold over internett.

Den mest brukte versjonen er HTTP 1.1, og selv om den er fullpakket med funksjonsforbedringer og ytelsesoptimaliseringer for å løse manglene til tidligere versjoner, er den kortere enn noen få andre fremtredende funksjoner som har blitt adressert av HTTP/2.

Hva er begrensningene for HTTP/1.1?

HTTP/1.1-protokollen er full av følgende mangler som gjør den mindre ideell, spesielt når du kjører nettservere med høy trafikk:

  1. Forsinkelser i lasting av nettsider på grunn av lange HTTP-overskrifter.
  2. HTTP/1.1 kan bare sende én forespørsel for hver fil per TCP-tilkobling.
  3. Gitt at HTTP/1.1 behandler én forespørsel for hver TCP-tilkobling, blir nettlesere tvunget til å sende en flom av parallelle TCP-tilkoblinger for å behandle forespørslene samtidig. Dette fører til TCP-overbelastning og til slutt sløsing med båndbredde og nettverksforringelse.

De ovennevnte problemene førte ofte til ytelsesforringelse og høye overheadkostnader i båndbreddebruk. HTTP/2 kom inn i bildet for å løse disse problemene og er nå fremtiden for HTTP-protokoller.

Fordeler med å bruke HTTP/2

Det gir følgende fordeler:

  1. Header-komprimering som minimerer klientforespørsler og dermed reduserer båndbreddeforbruket. Den resulterende effekten er raske sideinnlastingshastigheter.
  2. Multipleksing av flere forespørsler over én TCP-tilkobling. Både serveren og klienten kan bryte ned en HTTP-forespørsel i flere rammer og omgruppere dem i den andre enden.
  3. Raskere nettprestasjoner som følgelig fører til bedre SEO-rangering.
  4. Forbedret sikkerhet siden de fleste vanlige nettlesere laster HTTP/2 over HTTPS.
  5. HTTP/2 anses som mer mobilvennlig takket være header-komprimeringsfunksjonen.

Når det er sagt, skal vi aktivere HTTP/2ApacheUbuntu 20.04 LTS og Ubuntu 18.04 LTS.

Forutsetninger:

Før du begynner, sørg for at du aktiverer HTTPS på Apache-nettserveren før du aktiverer HTTP/2. Dette er fordi alle vanlige nettlesere støtter HTTP/2 over HTTPS. Jeg har et domenenavn som peker på en forekomst på Ubuntu 20.04 som kjører Apache-server sikret med Let's Encrypt-sertifikat.

Det anbefales også at du har Apache 2.4.26 og nyere versjoner for produksjonsservere som har til hensikt å skifte til HTTP/2.

For å sjekke versjonen av Apache du kjører, kjør kommandoen:

apache2 -v

Fra utdataene kan du se at vi bruker den nyeste versjonen, som er Apache 2.4.41 på tidspunktet for nedskrivning av denne artikkelen.

Aktiver HTTP/2 på en Apache Virtual Host

For å komme i gang må du først bekrefte at webserveren kjører HTTP/1.1. Du kan gjøre dette i en nettleser ved å åpne delen for utviklerverktøy på Google chrome ved å bruke Ctrl +SHIFT + I-kombinasjonen. Klikk på «Nettverk»-fanen og finn «Protokoll»-kolonnen.

Deretter aktiverer du HTTP/2-modulen på Ubuntu ved å kjøre følgende kommando.

sudo a2enmod http2

Finn og rediger den virtuelle vertsfilen SSL. Hvis du har aktivert HTTPS ved hjelp av La oss kryptere, opprettes en ny fil med en le-ssl.conf suffiks.

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

Sett inn direktivet nedenfor etter -taggen.

Protocols h2 http/1.1

For å lagre endringene, start Apache webserver på nytt.

sudo systemctl restart apache2

For å sjekke om HTTP/2 er aktivert, hent HTTP-overskriftene ved å bruke følgende curl-kommando som show.

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

Du bør få utgangen vist.

HTTP/2 200

Last inn nettstedet ditt på nytt i nettleseren. Gå deretter tilbake til utviklerverktøyene og bekreft HTTP/2 merket med h2-etiketten i «Protokoll»-kolonnen.

Når du bruker mod_php-modulen med Apache

Hvis du kjører Apache sammen med mod_php-modulen, må du bytte til PHP-FPM. Dette er fordi mod_php-modulen bruker prefork-MPM-modulen som ikke støttes av HTTP/2. Du må avinstallere prefork MPM og bytte til mpm_event-modulen som vil bli støttet av HTTP/2.

Hvis du for eksempel bruker PHP 7.4 mod_php-modulen, deaktiver den som vist:

sudo a2dismod php7.4 

Deretter deaktiverer du prefork MPM-modulen.

sudo a2dismod mpm_prefork

Etter at du har deaktivert modulene, aktiverer du modulene Event MPM, Fast_CGI og setenvif som vist.

sudo a2enmod mpm_event proxy_fcgi setenvif

Installer PHP-FPM på Ubuntu

Deretter installer og start PHP-FPM som vist.

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

Aktiver deretter PHP-FPM for å starte ved oppstart.

sudo systemctl enable php7.4-fpm

Deretter aktiverer du PHP-FPM som Apaches PHP-behandler og starter Apache-nettserveren på nytt for at endringene skal utføres.

sudo a2enconf php7.4-fpm

Aktiver HTTP/2-støtte i Apache Ubuntu

Aktiver deretter HTTP/2-modulen som før.

sudo a2enmod http2

Start Apache på nytt for å synkronisere alle endringene.

sudo systemctl restart apache2

Til slutt kan du teste om serveren din bruker HTTP/2-protokollen ved å bruke curl-kommandoen som vist.

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

Du kan også velge å bruke utviklerverktøyene i Google Chrome-nettleseren for å bekrefte som tidligere dokumentert. Vi må til slutten av denne veiledningen. Vi håper du fant informasjonen verdifull og at du enkelt kan aktivere HTTP/2Apache.