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:
- Kašnjenja s učitavanjem web stranica zbog dugih HTTP zaglavlja.
- HTTP/1.1 može poslati samo jedan zahtjev za svaku datoteku po TCP vezi.
- 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:
- Sažimanje zaglavlja koje minimizira zahtjeve klijenta i time smanjuje potrošnju propusnosti. Rezultirajući učinak su velike brzine učitavanja stranice.
- 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.
- Brže web izvedbe što posljedično dovodi do boljeg SEO rangiranja.
- Poboljšana sigurnost jer većina uobičajenih preglednika učitava HTTP/2 preko HTTPS-a.
- 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.