Kako omogočiti HTTP/2 v Apacheju v Ubuntuju


Od ustanovitve svetovnega spleta (www) se je protokol HTTP skozi leta razvijal, da je prek interneta zagotavljal varne in hitre digitalne vsebine.

Najpogosteje uporabljena različica je HTTP 1.1 in čeprav je opremljena z izboljšavami funkcij in optimizacijami učinkovitosti za odpravljanje pomanjkljivosti prejšnjih različic, ne izpolnjuje nekaterih drugih pomembnih funkcij, ki jih je obravnaval HTTP/2.

Protokol HTTP/1.1 vsebuje naslednje pomanjkljivosti, zaradi katerih je manj idealen, zlasti pri zagonu spletnih prometnih strežnikov:

  1. Zamude pri nalaganju spletnih strani zaradi dolgih HTTP glav.
  2. HTTP/1.1 lahko pošlje samo eno zahtevo za vsako datoteko na povezavo TCP.
  3. Glede na to, da HTTP/1.1 za vsako povezavo TCP obdela eno zahtevo, so brskalniki prisiljeni poslati poplavo vzporednih povezav TCP za istočasno obdelavo zahtev. To vodi do zastojev TCP in na koncu izgube pasovne širine in poslabšanja omrežja.

Zgoraj omenjene težave so pogosto povzročile poslabšanje zmogljivosti in visoke režijske stroške pri uporabi pasovne širine. HTTP/2 se je pojavil pri reševanju teh težav in je zdaj prihodnost protokolov HTTP.

Ponuja naslednje prednosti:

  1. Stiskanje glave, ki zmanjša zahteve strank in s tem zmanjša porabo pasovne širine. Rezultat tega so hitre hitrosti nalaganja strani.
  2. Multipliciranje več zahtev prek ene povezave TCP. Tako strežnik kot odjemalec lahko zahtevo HTTP razčlenita na več okvirjev in ju znova združita na drugem koncu.
  3. Hitrejše spletne izvedbe, ki posledično vodijo do boljšega uvrščanja SEO.
  4. Izboljšana varnost, saj večina običajnih brskalnikov nalaga HTTP/2 prek HTTPS.
  5. HTTP/2 zaradi funkcije stiskanja glave velja za mobilno prijaznejšo.

Kljub temu bomo omogočili HTTP/2 v Apacheju na Ubuntu 20.04 LTS in Ubuntu 18.04 LTS.

Preden začnete, zagotovite, da na spletnem strežniku Apache omogočite HTTPS, preden omogočite HTTP/2. To je zato, ker vsi običajni spletni brskalniki podpirajo HTTP/2 prek HTTPS. Imam domensko ime, ki je opozorilo na primerek v Ubuntu 20.04, ki je potrdilo Let's Encrypt.

Prav tako je priporočljivo, da imate Apache 2.4.26 in novejše različice za produkcijske strežnike, ki nameravajo preusmeriti na HTTP/2.

Če želite preveriti različico Apacheja, ki jo uporabljate, izvedite ukaz:

$ apache2 -v

Iz izhoda lahko vidite, da uporabljamo najnovejšo različico, to je Apache 2.4.41 v času, ko smo napisali ta članek.

Omogočite HTTP/2 na navideznem gostitelju Apache

Za začetek najprej potrdite, da spletni strežnik izvaja HTTP/1.1. To lahko storite v brskalniku, tako da s kombinacijo Ctrl + SHIFT + I odprete razdelek z orodji za razvijalce v Google chrome. Kliknite zavihek ‘Network’ in poiščite stolpec ‘Protocol’.

Nato omogočite modul HTTP/2 v Ubuntuju, tako da zaženete naslednji ukaz.

$ sudo a2enmod http2

Nato poiščite in uredite datoteko navideznega gostitelja SSL. Če ste omogočili HTTPS z uporabo Let’s Encrypt, se ustvari nova datoteka s pripono le-ssl.conf.

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

Vstavite spodnjo direktivo za oznako .

Protocols h2 http/1.1

Če želite shraniti spremembe, znova zaženite spletni strežnik Apache.

$ sudo systemctl restart apache2

Če želite preveriti, ali je HTTP/2 omogočen, potegnite glave HTTP z naslednjim ukazom curl kot show.

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

Prikazati bi morali izhod.

HTTP/2 200

V brskalniku znova naložite svoje spletno mesto. Nato se vrnite na orodja za razvijalce in potrdite HTTP/2, označen z oznako h2 v stolpcu »Protocol«.

Ko uporabljate mod_php modul z Apache

Če uporabljate Apache skupaj z modulom mod_php, morate preklopiti na PHP-FPM. To je zato, ker modul mod_php uporablja predfork MPM modul, ki ga HTTP/2 ne podpira. Odstraniti morate predfork MPM in preklopiti na modul mpm_event, ki ga bo podpiral HTTP/2.

Če na primer uporabljate modul PHP 7.4 mod_php, ga onemogočite, kot je prikazano:

$ sudo a2dismod php7.4 

Nato onemogočite predfork MPM modul.

$ sudo a2dismod mpm_prefork

Po onemogočanju modulov nato omogočite module MPM, Fast_CGI in setenvif, kot je prikazano.

$ sudo a2enmod mpm_event proxy_fcgi setenvif

Namestite PHP-FPM na Ubuntu

Nato namestite in zaženite PHP-FPM, kot je prikazano.

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

Nato omogočite PHP-FPM za zagon ob zagonu.

$ sudo systemctl enable php7.4-fpm

Nato omogočite PHP-FPM kot Apachejev PHP-jev obdelovalec in znova zaženite spletni strežnik Apache, da bodo spremembe izvedene.

$ sudo a2enconf php7.4-fpm

Omogočite podporo za HTTP/2 v Apache Ubuntu

Nato omogočite modul HTTP/2 kot prej.

$ sudo a2enmod http2

Znova zaženite Apache, da sinhronizirate vse spremembe.

$ sudo systemctl restart apache2

Na koncu lahko preizkusite, ali strežnik uporablja protokol HTTP/2 z ukazom curl, kot je prikazano.

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

Lahko se odločite tudi za uporabo orodij za razvijalce v brskalniku Google Chrome za preverjanje, kot je bilo prej dokumentirano. Na koncu tega priročnika je. Upamo, da so se vam informacije zdele dragocene in da lahko z lahkoto omogočite HTTP/2 v Apacheju.