Kako omogućiti HTTP/2 u Apacheu na Ubuntu


Od početka World Wide Weba (www), HTTP protokol je evoluirao tokom godina kako bi isporučio siguran i brz digitalni sadržaj preko internet.

Najrasprostranjenija verzija je HTTP 1.1 i iako sadrži poboljšanja karakteristika i optimizacije performansi kako bi se riješili nedostaci ranijih verzija, nedostaju joj nekoliko drugih istaknutih karakteristika koje su adresirane od strane HTTP/2.

Koja su ograničenja HTTP/1.1?

Protokol HTTP/1.1 prepun je sljedećih nedostataka koji ga čine manje idealnim, posebno kada se koriste web serveri s velikim prometom:

  1. Kašnjenja u učitavanju web stranica zbog dugih HTTP zaglavlja.
  2. HTTP/1.1 može poslati samo jedan zahtjev za svaki fajl po TCP konekciji.
  3. S obzirom na to da HTTP/1.1 obrađuje jedan zahtjev za svaku TCP vezu, pretraživači su primorani da šalju niz paralelnih TCP veza kako bi istovremeno obrađivali zahtjeve. To dovodi do zagušenja TCP-a i konačnog gubitka propusnog opsega i degradacije mreže.

Gore navedeni problemi često su doveli do degradacije performansi i visokih troškova u korištenju propusnog opsega. HTTP/2 se pojavio kako bi riješio ove probleme i sada je budućnost za HTTP protokole.

Prednosti korištenja HTTP/2

Nudi sljedeće prednosti:

  1. Kompresija zaglavlja koja minimizira zahtjeve klijenata i time smanjuje potrošnju propusnog opsega. Rezultat je velika brzina učitavanja stranica.
  2. Multipleksiranje nekoliko zahtjeva preko jedne TCP veze. I server i klijent mogu razbiti HTTP zahtjev u više okvira i pregrupisati ih na drugom kraju.
  3. Brže web performanse koje posljedično dovode do boljeg SEO rangiranja.
  4. Poboljšana sigurnost budući da većina mainstream pretraživača učitava HTTP/2 preko HTTPS-a.
  5. HTTP/2 se smatra pogodnijim za mobilne uređaje zahvaljujući funkciji kompresije zaglavlja.

Uz to, omogućit ćemo HTTP/2 na Apache na Ubuntu 20.04 LTS i Ubuntu 18.04 LTS.

Preduvjeti:

Prije nego što počnete, provjerite jeste li omogućili HTTPS na Apache web serveru prije nego što omogućite HTTP/2. To je zato što svi mainstream web pretraživači podržavaju HTTP/2 preko HTTPS. Imam ime domene koje ukazuje na instancu na Ubuntu 20.04 koja radi na Apache serveru zaštićenom pomoću Let’s Encrypt certifikata.

Također, preporučuje se da imate Apache 2.4.26 i novije verzije za proizvodne servere koji namjeravaju preći na HTTP/2.

Da provjerite 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 virtuelnom hostu

Za početak, prvo potvrdite da web server radi HTTP/1.1. Ovo možete učiniti u pretraživaču tako što ćete otvoriti odjeljak alata za programere na Google Chrome koristeći kombinaciju Ctrl +SHIFT + I. Kliknite na karticu 'Mreža' i pronađite kolonu 'Protokol'.

Zatim omogućite HTTP/2 modul na Ubuntu tako što ćete pokrenuti sljedeću naredbu.

sudo a2enmod http2

Zatim pronađite i uredite svoj SSL virtualni host fajl, ako ste omogućili HTTPS koristeći Let's Encrypt, kreira se nova datoteka sa le-ssl.conf sufiks.

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

Umetnite direktivu ispod nakon oznake .

Protocols h2 http/1.1

Da biste sačuvali promjene, ponovo pokrenite Apache web server.

sudo systemctl restart apache2

Da provjerite da li je HTTP/2 omogućen, dohvatite HTTP zaglavlja koristeći sljedeću curl komandu kao show.

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

Trebali biste dobiti prikazani izlaz.

HTTP/2 200

U pretraživaču ponovo učitajte svoju web lokaciju. Zatim se vratite na alate za programere i potvrdite HTTP/2 označen oznakom h2 u stupcu „Protocol”.

Kada koristite mod_php modul sa Apacheom

Ako koristite Apache uz mod_php modul, morate se prebaciti na PHP-FPM. To je zato što mod_php modul koristi prefork MPM modul koji HTTP/2 ne podržava. Morate deinstalirati prefork MPM i prebaciti se na mpm_event modul koji će podržavati HTTP/2.

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

sudo a2dismod php7.4 

Nakon toga, onemogućite prefork MPM modul.

sudo a2dismod mpm_prefork

Nakon što onemogućite module, zatim omogućite module Event MPM, Fast_CGI i setenvif kao što 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 PHP-FPM za pokretanje prilikom pokretanja.

sudo systemctl enable php7.4-fpm

Zatim omogućite PHP-FPM kao Apacheov PHP rukovalac i ponovo pokrenite Apache web server da bi se promjene izvršile.

sudo a2enconf php7.4-fpm

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

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

sudo a2enmod http2

Ponovo pokrenite Apache da sinhronizujete sve promjene.

sudo systemctl restart apache2

Konačno, možete testirati da li vaš server koristi HTTP/2 protokol koristeći curl komandu kao što je prikazano.

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

Također možete odabrati korištenje programskih alata na Google Chrome pregledniku da potvrdite kako je ranije dokumentirano. Moramo do kraja ovog vodiča. Nadamo se da su vam informacije bile vrijedne i da možete lako omogućiti HTTP/2 na Apacheu.