Wéi aktivéiert HTTP/2 an Apache op Ubuntu


Zënter der Grënnung vum World Wide Web (www), huet den HTTP-Protokoll iwwer d'Jore evoluéiert fir sécher a séier digital Inhalter iwwer den Internet ze liwweren.

Déi meescht verbreet Versioun ass HTTP 1.1 a wärend et mat Featureverbesserungen a Leeschtungsoptimiséierunge packt fir d'Mängel vu fréiere Versiounen unzegoen, fällt se kuerz vun e puer aner prominent Features, déi vum HTTP/2 adresséiert goufen.

Den HTTP/1.1 Protokoll ass voll mat de folgende Mängel, déi et manner ideal maachen, besonnesch wann Dir High-Traffic Webserver leeft:

  1. Verzögerungen beim Luede vu Websäite wéinst laangen HTTP-Header.
  2. HTTP/1.1 kann nëmmen eng Ufro fir all Fichier pro TCP Verbindung schécken.
  3. Gitt datt HTTP/1.1 eng Ufro fir all TCP Verbindung veraarbecht, sinn d'Browser gezwongen eng Deluge vu parallele TCP Verbindungen ze schécken fir d'Ufroe gläichzäiteg ze veraarbechten. Dëst féiert zu TCP Stau a schlussendlech Bandbreedverschwendung an Netzdegradatioun.

Déi uewe genannte Probleemer hunn dacks zu Leeschtungsverschlechterung an héich Overhead Käschten an der Bandbreedung gefouert. HTTP/2 koum an d'Bild fir dës Probleemer unzegoen an ass elo d'Zukunft fir HTTP Protokoller.

Et bitt déi folgend Virdeeler:

  1. Header Kompressioun déi Client Ufroen miniméiert an doduerch de Bandbreedverbrauch senkt. De resultéierende Effekt ass séier Säit Luede Geschwindegkeet.
  2. Multiplexing vun e puer Ufroen iwwer eng TCP Verbindung. Souwuel de Server wéi och de Client kënnen eng HTTP-Ufro a verschidde Frames opbriechen an se um aneren Enn regruppéieren.
  3. Méi séier Web-Leeschtungen déi als Resultat zu engem bessere SEO Ranking féieren.
  4. Besser Sécherheet well déi meescht Mainstream Browser HTTP/2 iwwer HTTPS lueden.
  5. HTTP/2 gëtt als méi mobilfrëndlech ugesinn dank der Header-Kompressiounsfunktioun.

Dat gesot, mir wäerte HTTP/2 op Apache op Ubuntu 20.04 LTS an Ubuntu 18.04 LTS aktivéieren.

Ier Dir ufänkt, gitt sécher datt Dir HTTPS um Apache Webserver aktivéiert ier Dir HTTP/2 aktivéiert. Dëst ass well all Mainstream Webbrowser HTTP/2 iwwer HTTPS ënnerstëtzen. Ech hunn en Domain Numm op eng Instanz op Ubuntu 20.04 gewisen, wat Let's Encrypt Zertifikat ass.

Och ass et recommandéiert datt Dir Apache 2.4.26 a spéider Versioune fir Produktiounsserver hutt, déi wëlles hunn eng Verréckelung op HTTP/2 ze maachen.

Fir d'Versioun vun Apache ze kontrolléieren déi Dir leeft, fuert de Kommando aus:

$ apache2 -v

Vun der Ausgab kënnt Dir gesinn datt mir déi lescht Versioun benotzen, déi Apache 2.4.41 ass zum Zäitpunkt vun dësem Artikel.

Aktivéiert HTTP/2 op engem Apache Virtual Host

Fir unzefänken, bestätegt als éischt datt de Webserver HTTP/1.1 leeft. Dir kënnt dat an engem Browser maachen andeems Dir d'Entwéckler Tools Sektioun op Google Chrome opmaacht mat der Kombinatioun Ctrl +SHIFT + I. Klickt op de Tab Netzwierk a lokaliséiert d'Kolonn Protokoll.

Als nächst aktivéiert den HTTP/2 Modul op Ubuntu andeems Dir de folgende Kommando ausféiert.

$ sudo a2enmod http2

Als nächst, lokaliséiert an editéiert Är SSL virtuelle Hostdatei, wann Dir HTTPS mat Let's Encrypt aktivéiert hutt, gëtt eng nei Datei mat engem le-ssl.conf Suffix erstallt.

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

Füügt d'Direktiv hei ënnen no der Tag.

Protocols h2 http/1.1

Fir d'Ännerungen ze späicheren, start den Apache Webserver nei.

$ sudo systemctl restart apache2

Fir z'iwwerpréiwen ob HTTP/2 aktivéiert ass, fuert d'HTTP Header mat dem folgenden Curl Kommando als Show.

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

Dir sollt d'Output gewisen kréien.

HTTP/2 200

Am Browser, lued Äre Site nei. Da gitt zréck op d'Entwéckler Tools a bestätegt HTTP/2 gezeechent mam h2 Label op der Kolonn 'Protokoll'.

Wann Dir mod_php Modul mat Apache benotzt

Wann Dir Apache niewent dem mod_php Modul leeft, musst Dir op PHP-FPM wiesselen. Dëst ass well de mod_php Modul de Prefork MPM Modul benotzt deen net vun HTTP/2 ënnerstëtzt gëtt. Dir musst de Prefork MPM deinstalléieren an op de mpm_event Modul wiesselen deen duerch HTTP/2 ënnerstëtzt gëtt.

Wann Dir zum Beispill de PHP 7.4 mod_php Modul benotzt, deaktivéiert et wéi gewisen:

$ sudo a2dismod php7.4 

Duerno deaktivéiert de Prefork MPM Modul.

$ sudo a2dismod mpm_prefork

Nodeems Dir d'Moduler auszeschalten, aktivéiert d'Evenement MPM, Fast_CGI, an Setenvif Moduler wéi gewisen.

$ sudo a2enmod mpm_event proxy_fcgi setenvif

Installéiert PHP-FPM op Ubuntu

Als nächst, installéieren a starten PHP-FPM wéi gewisen.

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

Dann aktivéiert PHP-FPM fir bei der Startzäit unzefänken.

$ sudo systemctl enable php7.4-fpm

Als nächst aktivéiert PHP-FPM als Apache's PHP Handler an nei start den Apache Webserver fir d'Ännerungen auszeféieren.

$ sudo a2enconf php7.4-fpm

Aktivéiert HTTP/2 Support an Apache Ubuntu

Dann aktivéiert den HTTP/2 Modul wéi virdrun.

$ sudo a2enmod http2

Restart Apache fir all Ännerungen ze synchroniséieren.

$ sudo systemctl restart apache2

Schlussendlech kënnt Dir testen ob Äre Server den HTTP/2 Protokoll benotzt mat dem Curl Kommando wéi gewisen.

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

Dir kënnt och entscheeden d'Entwéckler Tools am Google Chrome Browser ze benotzen fir z'iwwerpréiwen wéi virdru dokumentéiert. Mir mussen d'Enn vun dësem Guide, Mir hoffen Dir hutt d'Informatioun wäertvoll fonnt an datt Dir bequem HTTP/2 op Apache mat Liichtegkeet aktivéiere kënnt.