So aktivieren Sie HTTP/2 (und HTTP/3): Nginx, Apache, CDN
Wünschen Sie schnellere Ladezeiten? Aktivieren Sie HTTP/2 und, wenn möglich, HTTP/3. Dieser Leitfaden zeigt, wie Sie beides auf Nginx, Apache und gängigen CDNs aktivieren, wie Sie überprüfen, ob sie funktionieren, und schnelle Lösungen, falls nicht.
Warum HTTP/2 (und HTTP/3)?
HTTP/1.1 öffnet mehrere Verbindungen und wiederholt Header. HTTP/2 multiplexed Anfragen über eine Verbindung und komprimiert Header. HTTP/3 fügt QUIC über UDP hinzu, um Transport-Level-Blocking zu vermeiden. Ergebnis: schnellere Ladezeiten, insbesondere auf Mobilgeräten und bei Verbindungen mit hoher Latenz.
Schnelle Prüfungen: Sind sie aktiviert?
- DevTools: Netzwerk-Tab > Spalte „Protokoll“ hinzufügen. Suchen Sie nach h2 oder h3.
- CLI:
curl -I --http2 https://example.com
- HTTP/3:
curl -I --http3 https://example.com
(neueres curl) - Wasserfälle: Viele Dateien sollten gleichzeitig über eine Verbindung starten.
Nginx: HTTP/2 (und HTTP/3) aktivieren
server {
# HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
# Auskommentieren, wenn Ihr Build QUIC unterstützt
# listen 443 quic reuseport;
# add_header Alt-Svc 'h3=":443"; ma=86400' always;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=31536000" always;
# Ihre SSL-Zertifikatkonfiguration hier
}
Voraussetzungen: HTTP/2-Modul kompiliert, TLS-Bibliothek mit ALPN-Unterstützung. Die meisten modernen Pakete enthalten beides.
Apache: HTTP/2 aktivieren
# Modul laden
LoadModule http2_module modules/mod_http2.so
# Global oder in einem vhost aktivieren
Protocols h2 http/1.1
# Optional: auf modernes TLS beschränken
H2ModernTLSOnly on
Die Apache HTTP/3-Unterstützung ist experimentell. Bleiben Sie für die Produktion bei HTTP/2.
CDN: HTTP/2/3 aktivieren (Cloudflare, CloudFront, Akamai, Fastly)
Die meisten CDNs unterstützen HTTP/2 und HTTP/3. Aktivieren Sie sie für HTTPS-Traffic. Öffnen Sie UDP/443, wenn Sie Ihre eigene Edge betreiben und HTTP/3 wünschen. Wenn UDP blockiert ist, greifen Clients auf HTTP/2 zurück. Das Protokoll vom CDN zum Ursprung ist getrennt; verwenden Sie es, wenn es einfach ist, aber die Auswirkung auf den Benutzer kommt von der Edge.
Cloudflare
Dashboard > Speed > Optimization > HTTP/2 und HTTP/3 (standardmäßig aktiviert)
AWS CloudFront
Distributionseinstellungen > Unterstützte HTTP-Versionen > HTTP/2 und HTTP/3
Fastly
Servicekonfiguration > Einstellungen > HTTP/2- und HTTP/3-Unterstützung
Überprüfung + Fallback-Verhalten
Browser verhandeln automatisch während des TLS-Handshakes über ALPN. Wenn HTTP/3 fehlschlägt (UDP blockiert), greifen sie auf HTTP/2 zurück. Wenn HTTP/2 fehlschlägt (alter Server), verwenden sie HTTP/1.1. Keine manuelle Intervention erforderlich.
Überprüfen Sie Ihre Einrichtung:
- Moderne Browser zeigen h2/h3 in der DevTools-Protokollspalte an
- Wasserfall-Diagramme zeigen parallele Downloads über eine Verbindung an
- H3 hilft oft mobilen/verlustbehafteten Verbindungen mehr als Desktop
Fehlerbehebung
HTTP/2 funktioniert nicht?
- Prüfen Sie, ob Ihr Server-Build das HTTP/2-Modul enthält
- Stellen Sie sicher, dass die TLS-Bibliothek ALPN unterstützt (OpenSSL 1.0.2+)
- Stellen Sie sicher, dass Sie über HTTPS testen (Browser verlangen dies)
- Prüfen Sie, ob ein Proxy/Load Balancer auf HTTP/1.1 herabstuft
HTTP/3 funktioniert nicht?
- Stellen Sie sicher, dass UDP-Port 443 geöffnet ist
- Prüfen Sie, ob Ihr Build QUIC unterstützt
- Bestätigen Sie, dass der Alt-Svc-Header gesendet wird
- Testen Sie von verschiedenen Netzwerken (einige blockieren UDP)
FAQs
Benötige ich HTTPS für HTTP/2?
Ja. Browser verwenden HTTP/2 nur über TLS.
Ist HTTP/3 erforderlich?
Nein, aber aktivieren Sie es, wenn Sie können. Behalten Sie HTTP/2 als Fallback.
Wie überprüfe ich, ob HTTP/2/3 aktiv ist?
Verwenden Sie die Protokollspalte von DevTools oder führen Sie curl mit --http2 oder --http3 aus.
Warum hat die Aktivierung von HTTP/2 nicht viel geändert?
App-Langsamkeit und Netzwerkverluste gelten weiterhin. Cachen und profilieren Sie Ihre App; verwenden Sie HTTP/3 für verlustbehaftete Verbindungen.