Website-Suche

So aktivieren Sie HTTP/2 in Apache unter Ubuntu


Seit den Anfängen des World Wide Web (www) hat sich das HTTP-Protokoll im Laufe der Jahre weiterentwickelt, um sichere und schnelle digitale Inhalte im Internet bereitzustellen Internet.

Die am weitesten verbreitete Version ist HTTP 1.1 und obwohl sie zahlreiche Funktionserweiterungen und Leistungsoptimierungen enthält, um die Mängel früherer Versionen zu beheben, bleibt sie hinter einigen anderen wichtigen Funktionen zurück, die von HTTP/2.

Was sind die Einschränkungen von HTTP/1.1?

Das HTTP/1.1-Protokoll ist mit den folgenden Mängeln behaftet, die es insbesondere beim Betrieb von Webservern mit hohem Datenverkehr weniger ideal machen:

  1. Verzögerungen beim Laden von Webseiten aufgrund langer HTTP-Header.
  2. HTTP/1.1 kann pro TCP-Verbindung nur eine Anfrage für jede Datei senden.
  3. Da HTTP/1.1 für jede TCP-Verbindung eine Anfrage verarbeitet, sind Browser gezwungen, eine Flut paralleler TCP-Verbindungen zu senden, um die Anfragen gleichzeitig zu verarbeiten. Dies führt zu einer TCP-Überlastung und letztendlich zu Bandbreitenverschwendung und Netzwerkverschlechterung.

Die oben genannten Probleme führten häufig zu Leistungseinbußen und hohen Overhead-Kosten bei der Bandbreitennutzung. HTTP/2 kam ins Spiel, um diese Probleme anzugehen und ist nun die Zukunft für HTTP-Protokolle.

Vorteile der Verwendung von HTTP/2

Es bietet folgende Vorteile:

  1. Header-Komprimierung, die Client-Anfragen minimiert und dadurch den Bandbreitenverbrauch senkt. Der daraus resultierende Effekt sind schnelle Seitenladegeschwindigkeiten.
  2. Multiplexen mehrerer Anfragen über eine TCP-Verbindung. Sowohl der Server als auch der Client können eine HTTP-Anfrage in mehrere Frames zerlegen und diese am anderen Ende neu gruppieren.
  3. Schnellere Web-Performances, die folglich zu einem besseren SEO-Ranking führen.
  4. Verbesserte Sicherheit, da die meisten Mainstream-Browser HTTP/2 über HTTPS laden.
  5. HTTP/2 gilt dank der Header-Komprimierungsfunktion als mobilfreundlicher.

Allerdings 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 gängigen Webbrowser HTTP/2 über HTTPS unterstützen. Ich habe einen Domänennamen, der auf eine Instanz unter Ubuntu 20.04 verweist, auf der ein Apache-Server ausgeführt wird, der mit dem Let’s Encrypt-Zertifikat gesichert ist.

Außerdem wird empfohlen, dass Sie über Apache 2.4.26 und höhere Versionen für Produktionsserver verfügen, die auf HTTP/2 umsteigen möchten.

Um die Version von Apache zu überprüfen, die Sie ausführen, führen Sie den folgenden Befehl aus:

apache2 -v

Aus der Ausgabe können Sie ersehen, dass wir zum Zeitpunkt der Erstellung dieses Artikels die neueste Version verwenden, nämlich Apache 2.4.41.

Aktivieren Sie HTTP/2 auf einem Apache Virtual Host

Stellen Sie zunächst sicher, dass auf dem Webserver HTTP/1.1 ausgeführt wird. Sie können dies 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 HTTP/2-Modul auf Ubuntu, indem Sie den folgenden Befehl ausführen.

sudo a2enmod http2

Suchen und bearbeiten Sie als Nächstes Ihre virtuelle SSL-Hostdatei. Wenn Sie HTTPS mit Let's Encrypt aktiviert haben, wird eine neue Datei mit einer le-ssl.conf erstellt Suffix.

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

Fügen Sie die folgende Anweisung nach dem Tag 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, rufen Sie die HTTP-Header mit dem folgenden Curl-Befehl ab (siehe Abbildung).

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

Sie sollten die angezeigte Ausgabe erhalten.

HTTP/2 200

Laden Sie Ihre Website im Browser neu. Gehen Sie dann zurück zu den Entwicklertools und bestätigen Sie HTTP/2, das durch die Bezeichnung h2 in der Spalte „Protokoll“ gekennzeichnet ist.

Bei Verwendung des mod_php-Moduls mit Apache

Wenn Sie Apache neben dem mod_php-Modul ausführen, müssen Sie auf PHP-FPM umsteigen. Dies liegt daran, dass das Modul mod_php das Prefork-Modul MPM 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 Modul PHP 7.4 mod_php verwenden, deaktivieren Sie es wie gezeigt:

sudo a2dismod php7.4 

Deaktivieren Sie anschließend das Prefork-MPM-Modul.

sudo a2dismod mpm_prefork

Nachdem Sie die Module deaktiviert haben, aktivieren Sie als Nächstes die Module Event MPM, Fast_CGI und setenvif wie gezeigt.

sudo a2enmod mpm_event proxy_fcgi setenvif

Installieren Sie PHP-FPM auf Ubuntu

Als nächstes installieren und starten Sie PHP-FPM wie gezeigt.

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 von 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 wie zuvor das HTTP/2-Modul.

sudo a2enmod http2

Starten Sie Apache neu, um alle Änderungen zu synchronisieren.

sudo systemctl restart apache2

Abschließend können Sie wie gezeigt mit dem Befehl „curl“ testen, ob Ihr Server das Protokoll HTTP/2 verwendet.

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

Sie können zur Überprüfung auch die Entwicklertools im Google Chrome-Browser verwenden, wie bereits beschrieben. Wir haben das Ende dieses Leitfadens erreicht. Wir hoffen, dass Sie die Informationen wertvoll fanden und dass Sie HTTP/2 problemlos auf Apache aktivieren können.