HTTP2 Troubleshooting für Apache2

von Alexander Schwirjow

Die Theorie

Bei der Einführung von HTTP/1.1 (RFC 2616) im Jahre 1999 war die Welt noch in Ordnung. Die Internetseiten mussten noch keine Hunderte von JS und CSS Dateien nachladen, und die Monitore waren nicht einmal HD. Da war die Begrenzung auf 4 gleichzeitige Verbindungen noch kein Drama. Heute kann es durchaus dazu kommen, das um eine Seite mit 2 Paragrafen im Browser rendern zu können noch Dutzende und Hunderte von Requests getätigt werden müssen. Lange wurde getüftelt, 16 Jahre und 4924 RFC's später war es so weit - HTTP/2(RFC 7540) war offiziell geboren. Und so jung wie es ist, steckt es noch bis zum Hals in den Kinderschuhen...

Erst einmal was Gutes - der Protokoll wird von über 77% der Browser unterstützt, somit können die meisten davon Profitieren. Und da kommt ein ABER - so gut wie alle Browser unterstützen es nur für sichere Verbindungen(TLS). Ohne Zertifikat lohnt es sich also schon mal nicht wirklich. 

Nach dem es hier nicht darum geht, mod_http2 zu installieren - dafür gibt es die offizielle Dokumentation, und einige besser verständliche Anleitungen im Netz. Hier geht es um die möglichen Gründe, warum HTTP/2 nicht aktiv ist, obwohl es eigentlich sollte. Ob es tatsächlich funktioniert hat, sieht man im DevTools des Browsers, im Chrome auch live unter chrome://net-internals/#http2, oder mit Hilfe von Online-Tools wie https://tools.keycdn.com/http2-test.

Wenn Sie so wie ich vor ein Paar Tagen verzweifelt nach dem Grund suchen, warum alle bereits in 2017 wohnen, und ihr Server in 1999, dann könnte man folgendes versuchen.

Ist der Modul geladen?

Kann sein, das der Modul ja zwar installiert, aber nicht aktiviert ist. Das findet man in Ubuntu so heraus:

sudo apachectl -M

Als Rückgabe erhält man die Liste der geladenen Module. Zum einen muss in der Liste http2_module auftauchen, zum anderen darf mpm_prefork nicht in der Liste sein. Der ist nämlich bei Apache 2.4 standardmäßig aktiviert, mit HTTP/2 aber nicht kompatibel. Dieser Multi-Processing-Modul bietet die beste Kompatibilität und ist auch bei den meisten Shared-Hostern, und in vielen Systemen wie cPanel zu finden. Für HTTP/2 muss dieser gegen mpm_event oder mpm_worker ausgetauscht werden, je nach dem. Bei dem Wechsel kann es zu Konflikten mit mod_php kommen, also evtl. auf fastcgi_module tauschen.

Lohnt es sich?

Theoretisch - ja. Praktisch - auch ja, insbesondere in Kombination mit anderen Optimierungen. Verständlicherweise ist der Effekt umso spürbar, je mehr Request die Seite hat. Zum Test habe ich die Startseite etwas beladen und mit https://www.dareboost.com/en/website-speed-test-http2-vs-http1 die Ladezeiten verglichen.

Das dunklere ist dabei die HTTP/1.1, das hellere - HTTPS/2-Methode. Die Unterschiede sind durchaus spürbar. 

Fazit

Wenn Sie eine Möglichkeit haben, den Update zu installieren - tuen Sie es. 

Update

Mittlerweile wird sogar bei einigen Shared-Hosting-Anbietern die HTTP2-Unterstützung automatisch eingeschaltet, sobald ein Zertiffikat gekauft oder aktiviert ist.

Zurück