Wie man HTTP/2 in Apache Web Server aktiviert

Das Hypertext Transfer Protocol Version 2 (HTTP/2) ist die neueste Version des HTTP-Protokolls, die 2015 als IETF-Standard im RFC 7540 veröffentlicht wurde. Der Schwerpunkt des Protokolls liegt auf der Leistung, insbesondere auf der vom Endbenutzer wahrgenommenen Latenz, der Netzwerk- und Server-Ressourcennutzung. Ein Hauptziel ist es, die Nutzung einer einzigen Verbindung von Browsern zu einer Website zu ermöglichen. Das Protokoll ist abwärtskompatibel, d.h. HTTP-Methoden, Statuscodes und Semantik sind die gleichen wie bei früheren Versionen des Protokolls. Der Apache hat seit Version 2.4.17 HTTP/2-Unterstützung.In diesem Tutorial gehe ich davon aus, dass Sie bereits eine funktionierende TLS-Konfiguration haben und dass Sie eine Apache-Version auf der Linux-Distribution Ihrer Wahl installiert haben müssen und dass Sie wissen, wie man Let’s Encrypt verwendet oder wie man ein selbstsigniertes Zertifikat ausstellt.

Dieses Tutorial wurde auf Debian 9, Debian 10 und Ubuntu 18.04 LTS getestet.

Voraussetzungen

Um HTTP/2 im Apache zu aktivieren, m?ssen Sie die folgenden Anforderungen erf?llen:

  • Zuerst müssen Sie HTTPS auf Ihrem Server aktivieren. Alle gängigen Browser erlauben die Verwendung von HTTP/2 nur über HTTPS. Außerdem ist die TLS-Protokollversion >= 1.2 mit modernen Cipher-Suites erforderlich.
  • Stellen Sie als n?chstes sicher, dass Sie Apache 2.4.17 oder h?her einsetzen, da HTTP/2 ab dieser Version unterst?tzt wird.
  • Stellen Sie außerdem sicher, dass Ihr Client/Browser HTTP/2 tatsächlich unterstützt.

Deaktivieren Sie das mod_php-Modul

Bevor wir das Apache MPM-Modul im nächsten Schritt auf mpm_event umstellen können, müssen wir den alten mod_php-Modus deaktivieren und durch den moderneren PHP-FPM-Modus ersetzen. Die Befehle sind für jede Betriebssystemversion unterschiedlich, bitte verwenden Sie die Befehle, die zu Ihrem installierten System passen.

Debian 9

sudo apt-get install php7.0-fpm
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm
sudo a2enmod proxy_fcgi

Debian 10

sudo apt-get install php7.3-fpm
sudo a2dismod php7.3
sudo a2enconf php7.3-fpm
sudo a2enmod proxy_fcgi

Ubuntu 18.04 LTS

sudo apt-get install php7.2-fpm
sudo a2dismod php7.2
sudo a2enconf php7.2-fpm
sudo a2enmod proxy_fcgi

Aktivieren Sie ein Apache MPM, das mit HTTP/2 kompatibel ist

Standardmäßig verwendet der Apache das Prefork MPM. Dieses MPM ist nicht kompatibel mit HTTP/2, daher müssen wir es durch das modernere Modul mpm_event ersetzen.

Zuerst deaktivieren wir das Modul mpm_prefork:

sudo a2dismod mpm_prefork

Dann aktivieren wir das Modul mpm_event:

sudo a2enmod mpm_event

Aktivieren Sie die HTTP/2-Unterstützung im Apache

Um HTTP/2 auf dem Apache zum Laufen zu bringen, müssen Sie SSL- und HTTP/2-Module aktivieren und laden. Dazu können Sie Folgendes in Ihrem Terminal ausführen:

sudo a2enmod ssl

und dann

sudo a2enmod http2

Um diese neuen Module zu aktivieren, müssen Sie sie ausführen:

sudo systemctl restart apache2

Nachdem Sie die erforderlichen Apache-Module aktiviert und geladen haben, navigieren Sie zu Ihrem Apache-Konfigurationsverzeichnis und bearbeiten Sie die Apache-Konfiguration.

Um HTTP/2 auf Ihrem Apache-Webserver zu aktivieren, fügen Sie eine der folgenden Optionen zu Ihrer globalen Apache-Konfiguration oder innerhalb eines bestimmten virtuellen Hosts hinzu.

Protocols h2 http/1.1

Hier ist die minimale virtuelle Serverkonfiguration, die verwendet werden kann, um HTTP/2 in einigen virtuellen Hosts zu aktivieren:

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /var/www/public_html/example.com
  SSLEngine on
  SSLCertificateKeyFile /path/to/private.pem
  SSLCertificateFile /path/to/cert.pem
  SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
  Protocols h2 http/1.1
</VirtualHost>

Um zu überprüfen, ob Ihr Server HTTP/2 unterstützt, können Sie Ihre Browser-Dev-Tools verwenden. Die folgenden Screenshots von Google Chrome und Apple Safari zeigen HTTP/2 in Aktion auf der Domain https://example.com.

Chrom

HTTP/2 im Chrome-Browser

Safari

HTTP/2 im Safari-Browser

Links

Das könnte dich auch interessieren …