Kako omogućiti HTTP/2 u Apacheu na Ubuntuu


Od nastanka World Wide Weba (www), HTTP protokol evoluirao je tijekom godina kako bi pružio siguran i brz digitalni sadržaj putem Interneta.

Najrasprostranjenija inačica je HTTP 1.1, a iako sadrži poboljšanja značajki i optimizacije izvedbe za rješavanje nedostataka ranijih verzija, nedostaje nekoliko drugih istaknutih značajki kojima je HTTP/2 pozabavio.

HTTP/1.1 protokol ispunjen je sljedećim nedostacima koji ga čine manje idealnim, posebno kada se izvode web poslužitelji s velikim prometom:

  1. Kašnjenja s učitavanjem web stranica zbog dugih HTTP zaglavlja.
  2. HTTP/1.1 može poslati samo jedan zahtjev za svaku datoteku po TCP vezi.
  3. S obzirom na to da HTTP/1.1 obrađuje jedan zahtjev za svaku TCP vezu, preglednici su prisiljeni poslati poplavu paralelnih TCP veza kako bi istovremeno obradili zahtjeve. To dovodi do zagušenja TCP-a i na kraju gubitka propusnosti i propadanja mreže.

Gore navedeni problemi često su dovodili do pogoršanja performansi i visokih općih troškova pri korištenju propusne širine. HTTP/2 se pojavio u rješavanju ovih problema i sada je budućnost za HTTP protokole.

Nudi sljedeće prednosti:

  1. Sažimanje zaglavlja koje minimizira zahtjeve klijenta i time smanjuje potrošnju propusnosti. Rezultirajući učinak su velike brzine učitavanja stranice.
  2. Multipleksiranje nekoliko zahtjeva putem jedne TCP veze. I poslužitelj i klijent mogu razbiti HTTP zahtjev u više okvira i pregrupirati ih na drugom kraju.
  3. Brže web izvedbe što posljedično dovodi do boljeg SEO rangiranja.
  4. Poboljšana sigurnost jer većina uobičajenih preglednika učitava HTTP/2 preko HTTPS-a.
  5. HTTP/2 smatra se prilagodljivijim mobilnim uređajima zahvaljujući značajci kompresije zaglavlja.

Međutim, omogućit ćemo HTTP/2 na Apacheu na Ubuntu 20.04 LTS i Ubuntu 18.04 LTS.

Prije nego što započnete, osigurajte da omogućite HTTPS na web poslužitelju Apache prije omogućavanja HTTP/2. To je zato što svi uobičajeni web preglednici podržavaju HTTP/2 preko HTTPS-a. Imam ime domene ukazano na instancu na Ubuntu 20.04 koja je certifikat Let’s Encrypt.

Također, preporučuje se da imate Apache 2.4.26 i novije verzije za proizvodne poslužitelje koji namjeravaju prebaciti se na HTTP/2.

Da biste provjerili verziju Apachea koju koristite, izvršite naredbu:

$ apache2 -v

Iz rezultata možete vidjeti da koristimo najnoviju verziju, a to je Apache 2.4.41 u vrijeme pisanja ovog članka.

Omogućite HTTP/2 na Apache virtualnom hostu

Da biste započeli, prvo potvrdite da web poslužitelj izvodi HTTP/1.1. To možete učiniti u pregledniku otvaranjem odjeljka alata za programere na Google chromeu kombinacijom Ctrl + SHIFT + I . Kliknite karticu "Mreža" i pronađite stupac "Protokol".

Dalje, omogućite HTTP/2 modul na Ubuntuu izvođenjem sljedeće naredbe.

$ sudo a2enmod http2

Zatim pronađite i uredite svoju SSL datoteku virtualnog hosta. Ako ste omogućili HTTPS pomoću Let’s Encrypt, nova datoteka kreira se s sufiksom le-ssl.conf.

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

Umetnite donju direktivu nakon oznake .

Protocols h2 http/1.1

Da biste spremili promjene, ponovo pokrenite web poslužitelj Apache.

$ sudo systemctl restart apache2

Da biste provjerili je li HTTP/2 omogućen, dohvatite HTTP zaglavlja pomoću sljedeće naredbe curl kao show.

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

Trebali biste dobiti prikazani izlaz.

HTTP/2 200

U pregledniku ponovo učitajte web mjesto. Zatim se vratite na alate za programere i potvrdite HTTP/2 označen oznakom h2 u stupcu "Protokol".

Kada koristite mod_php modul s Apacheom

Ako koristite Apache zajedno s mod_php modulom, morate se prebaciti na PHP-FPM. To je zato što mod_php modul koristi predformirani MPM modul koji HTTP/2 ne podržava. Morate deinstalirati predfork MPM i prebaciti se na modul mpm_event koji će biti podržan od strane HTTP/2.

Ako, na primjer, koristite modul PHP 7.4 mod_php, onemogućite ga kako je prikazano:

$ sudo a2dismod php7.4 

Nakon toga onemogućite predfork MPM modul.

$ sudo a2dismod mpm_prefork

Nakon onemogućavanja modula, zatim omogućite module MPM, Fast_CGI i setenvif kako je prikazano.

$ sudo a2enmod mpm_event proxy_fcgi setenvif

Instalirajte PHP-FPM na Ubuntu

Zatim instalirajte i pokrenite PHP-FPM kao što je prikazano.

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

Zatim omogućite pokretanje PHP-FPM-a u vrijeme pokretanja.

$ sudo systemctl enable php7.4-fpm

Zatim omogućite PHP-FPM kao Apacheov PHP rukovatelj i ponovo pokrenite web poslužitelj Apache da bi promjene mogle biti izvršene.

$ sudo a2enconf php7.4-fpm

Omogućite HTTP/2 podršku u Apache Ubuntu

Zatim omogućite HTTP/2 modul kao i prije.

$ sudo a2enmod http2

Ponovo pokrenite Apache da biste sinkronizirali sve promjene.

$ sudo systemctl restart apache2

Na kraju, možete testirati koristi li vaš poslužitelj HTTP/2 protokol pomoću naredbe curl kao što je prikazano.

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

Možete se odlučiti i za upotrebu alata za programere u pregledniku Google Chrome da biste potvrdili kako je ranije dokumentirano. Moramo do kraja ovog vodiča. Nadamo se da su vam informacije bile dragocjene i da s lakoćom možete lako omogućiti HTTP/2 na Apacheu.