Durch die Verwendung von HTTP/2 wird die Verbindung bei SSL/TSL Verbindungen stark beschleudingt. Wir müssen den Apache2 für die Verwendung von HTTP/2 umstellen.

Hinweis: Das Modul mod_php verwendet das Prozessmodul mpm_prefork. Um das Protokoll HTTP/2 zu verwenden, müssen wir auf das Prozessmodul mpm_event mit FastCGI umstellen.

Die Installation von Apache2 und PHP7.2 erfolgt unter Ubuntu 18.04 wie folgt.

sudo apt install apache2 php7.2

Nach der Installation läuft der Apache mit Prefork als Prozessmodul. Für HTTP/2 brauchen wir das Prozessmodul Event.

Zuerst deaktivieren wir MPM Prefork und das Modul von PHP.

sudo a2dismod php7.2
sudo a2dismod mpm_prefork

Jetzt aktivieren das MPM Event Prozessmodul mit FastCGI.

sudo a2enmod mpm_event proxy_fcgi setenvif

Wir möchten PHP mit FastCGI verwenden und installier es jetzt.

sudo apt install php7.2-fpm
sudo a2enconf php7.2-fpm

PHP läuft als extra Dienst, welche wir aktivieren und starten.

sudo systemctl start php7.2-fpm
sudo systemctl enable php7.2-fpm

Nach dem Neustart von Apache sollte PHP wieder laufen.

sudo systemctl restart apache2

Für HTTP/2 aktivieren wir das Modul.

sudo a2enmod http2

Damit unsere Webseite das Protokoll HTTP/2 verwendet, müssen wir es in der Konfiguration hinterlegen.

sudo vim /etc/apache2/sites-enabled/your-host-ssl.conf

<VirtualHost *:443>
 Protocols h2 http/1.1
 SSLEngine On
 ...

Nach einem Neustart von Apache sollte das Protokoll HTTP/2 funktionieren.

sudo systemctl restart apache2

Den Funktionstest kann man mit dem Curl Tool durchführen. Hier am Beispiel von Google.

curl -k -v --http2 https://www.google.com/

Sollte es zu Problemen mit der Anzahl der Theads kommen, kann man die Anzahl begrenzen.

sudo vim /etc/apache2/mods-enabled/http2.load

H2MinWorkers 1
H2MaxWorkers 1

Das Protokoll HTTP/2 ermöglich auch das Vorrausladen (Preload) von Inhalten. Hier ein Beispiel für WordPress als Header.

Header add Link "</wp-content/themes/twentyseventeen/style.css>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery.js>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery-migrate.min.js>;rel=preload"
Header add Link "</wp-includes/js/wp-embed.min.js>;rel=preload"