Seit der Entstehung des World Wide Web (www), hat sich das HTTP-Protokoll im Laufe der Jahre weiterentwickelt, um sichere und schnelle digitale Inhalte über das Internet zu liefern.
Die am häufigsten verwendete Version ist HTTP 1.1 und obwohl sie mit Funktionserweiterungen und Leistungsoptimierungen auf die Schwächen früherer Versionen reagiert, unterliegt sie einigen anderen wichtigen Merkmalen, die durch das HTTP/2 behoben wurden.
Was sind die Einschränkungen von HTTP/1.1?
Das HTTP/1.1-Protokoll ist mit folgenden Schwächen behaftet, die es insbesondere bei der Ausführung von Webservern mit hohem Datenverkehr weniger ideal machen:
- Verzögerungen bei der Laden von Webseiten aufgrund langwieriger HTTP-Header.
- HTTP/1.1 kann nur eine Anforderung pro Datei pro TCP-Verbindung senden.
- Da HTTP/1.1 eine Anforderung pro TCP-Verbindung verarbeitet, sind Browser gezwungen, eine Flut von parallelen TCP-Verbindungen zu senden, um die Anforderungen gleichzeitig zu verarbeiten. Dies führt zu TCP-Stau und letztendlich zu Bandbreitennutzung und Netzwerkverschlechterung.
Die oben genannten Probleme führten oft zu Leistungsverschlechterung und hohen Mehrkosten bei der Bandbreitennutzung. HTTP/2 trat auf den Plan, um diese Probleme zu beheben, und ist nun die Zukunft für HTTP-Protokolle.
Vorteile der Verwendung von HTTP/2
Es bietet die folgenden Vorteile:
- Header-Komprimierung, die die Client-Anfragen minimiert und somit die Bandbreitennutzung senkt. Das Ergebnis ist eine schnellere Seitenladezeit.
- Mehrere Anfragen über eine TCP-Verbindung multiplexen. Sowohl der Server als auch der Client können eine HTTP-Anfrage in mehrere Frames aufteilen und diese am anderen Ende wieder zusammenführen.
- Schnellere Web-Performance, die folglich zu einer besseren SEO-Platzierung führt.
- Verbesserte Sicherheit, da die meisten Mainstream-Browser HTTP/2 über HTTPS laden.
- HTTP/2 wird aufgrund der Header-Komprimierungsfunktion als mobiler freundlich angesehen.
Daher werden wir HTTP/2 auf Apache auf Ubuntu 20.04 LTS und Ubuntu 18.04 LTS aktivieren.
Voraussetzungen:
Bevor Sie beginnen, stellen Sie sicher, dass Sie HTTPS auf dem Apache-Webserver aktivieren, bevor Sie HTTP/2 aktivieren. Dies liegt daran, dass alle Mainstream-Webbrowser HTTP/2 über HTTPS unterstützen. Ich habe einen Domainnamen, der auf eine Instanz auf Ubuntu 20.04 zeigt, auf der ein Apache-Server läuft, der mit einem Let’s Encrypt-Zertifikat gesichert ist.
Außerdem wird empfohlen, dass Sie Apache 2.4.26 oder neuere Versionen für Produktionsserver haben, die auf HTTP/2 umstellen möchten.
Um die Version von Apache zu überprüfen, die Sie ausführen, führen Sie den Befehl aus:
$ apache2 -v

Aus der Ausgabe können Sie sehen, dass wir die neueste Version verwenden, die zum Zeitpunkt des Verfassens dieses Artikels Apache 2.4.41 ist.
HTTP/2 auf einem Apache Virtual Host aktivieren
Zunächst bestätigen Sie, dass der Webserver HTTP/1.1 ausführt. Dies können Sie in einem Browser tun, indem Sie den Abschnitt Entwicklertools in Google Chrome mit der Kombination Strg + UMSCHALT + I
öffnen. Klicken Sie auf die Registerkarte ‚Netzwerk‚ und suchen Sie die Spalte ‚Protokoll‚.

Als Nächstes aktivieren Sie das Modul HTTP/2 auf Ubuntu, indem Sie den folgenden Befehl ausführen.
$ sudo a2enmod http2

Suchen Sie dann Ihre SSL-Virtual-Host-Datei und bearbeiten Sie diese, wenn Sie HTTPS mit Let’s Encrypt aktiviert haben, wird eine neue Datei mit dem Suffix le-ssl.conf erstellt.
$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf
Fügen Sie die unten stehende Direktive nach dem Tag <VirtualHost *:443>
ein.
Protocols h2 http/1.1

Um die Änderungen zu speichern, starten Sie den Apache-Webserver neu.
$ sudo systemctl restart apache2
Um zu überprüfen, ob HTTP/2 aktiviert ist, holen Sie die HTTP-Header mit dem folgenden curl-Befehl wie gezeigt.
$ curl -I --http2 -s https://domain.com/ | grep HTTP

Sie sollten die angezeigte Ausgabe erhalten.
HTTP/2 200
Laden Sie im Browser Ihre Website neu. Gehen Sie dann zurück zu den Entwicklertools und bestätigen Sie HTTP/2, gekennzeichnet durch das Label h2
in der Spalte ‚Protokoll‚.

Beim Verwenden des mod_php-Moduls mit Apache
Wenn Sie Apache neben dem mod_php-Modul ausführen, müssen Sie zu PHP-FPM wechseln. Dies liegt daran, dass das mod_php-Modul das prefork MPM-Modul verwendet, das von HTTP/2 nicht unterstützt wird. Sie müssen das prefork MPM deinstallieren und zum mpm_event-Modul wechseln, das von HTTP/2 unterstützt wird.
Wenn Sie beispielsweise das PHP 7.4 mod_php-Modul verwenden, deaktivieren Sie es wie folgt:
$ sudo a2dismod php7.4

Deaktivieren Sie anschließend das prefork MPM-Modul.
$ sudo a2dismod mpm_prefork

Nach dem Deaktivieren der Module aktivieren Sie als nächstes die Module Event MPM, Fast_CGI und setenvif wie folgt.
$ sudo a2enmod mpm_event proxy_fcgi setenvif

Installieren Sie PHP-FPM unter Ubuntu
Installieren und starten Sie dann PHP-FPM wie folgt.
$ sudo apt install php7.4-fpm $ sudo systemctl start php7.4-fpm
Aktivieren Sie dann PHP-FPM, um beim Booten zu starten.
$ sudo systemctl enable php7.4-fpm
Aktivieren Sie als nächstes PHP-FPM als PHP-Handler für Apache und starten Sie den Apache-Webserver neu, damit die Änderungen wirksam werden.
$ sudo a2enconf php7.4-fpm
Aktivieren Sie die HTTP/2-Unterstützung in Apache Ubuntu
Aktivieren Sie dann das HTTP/2-Modul wie zuvor.
$ sudo a2enmod http2
Starten Sie Apache neu, um alle Änderungen zu synchronisieren.
$ sudo systemctl restart apache2
Zuletzt können Sie überprüfen, ob Ihr Server das HTTP/2-Protokoll verwendet, indem Sie den curl-Befehl wie gezeigt verwenden.
$ curl -I --http2 -s https://domain.com/ | grep HTTP

Sie können auch die Entwicklertools im Google Chrome-Browser verwenden, um wie zuvor dokumentiert zu überprüfen. Wir sind am Ende dieses Leitfadens angekommen. Wir hoffen, dass Sie die Informationen als wertvoll empfunden haben und dass Sie HTTP/2 auf Apache mit Leichtigkeit aktivieren können.
Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/