Angekündigt heißt noch nicht funktionsfähig
Ein Server kündigt HTTP/3 im Antwortheader Alt-Svc an, den der Client über eines dieser Protokolle erhält: HTTP/1.1 oder HTTP/2. Der Header ist nur ein Versprechen. HTTP/3 läuft über QUIC auf UDP. Deshalb kann die Seite bei vollständig blockiertem UDP normal laden, während der Browser unbemerkt bei HTTP/2 bleibt.
curl -sI https://server.example/ | grep -i alt-svcEchte Übertragung bestätigen
Nur eine abgeschlossene Anfrage über QUIC bestätigt HTTP/3. Verwenden Sie ein curl, das mit HTTP/3-Unterstützung gebaut wurde. Bei vielen Systempaketen fehlt sie; dann wird die Option abgelehnt, was nichts über den Server aussagt. Öffnen Sie im Browser die Entwicklerwerkzeuge und prüfen Sie die Protokollspalte: Für eine solche Anfrage steht dort h3. Beim ersten Besuch kann der Browser HTTP/2 verwenden, laden Sie die Seite daher erneut.
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/NGINX-Konfiguration prüfen
NGINX benötigt neben dem TCP-Listener einen QUIC-Listener; Version und Build müssen dies unterstützen. TLS 1.3 ist erforderlich, da QUIC es direkt verwendet. Prüfen Sie die Konfiguration vor dem Neuladen. Der Wert ma in Alt-Svc gibt an, wie viele Sekunden Clients sich das Versprechen merken. Verwenden Sie beim Testen daher einen kurzen Zeitraum.
listen 443 ssl;
listen 443 quic reuseport;
http2 on;
add_header Alt-Svc 'h3=":443"; ma=300' always;
nginx -V 2>&1 | grep -o with-http_v3_module
sudo nginx -tUDP 443 auf dem gesamten Weg freigeben
Die häufigste Fehlerursache ist eine Firewall, die TCP 443 erlaubt, aber UDP 443 sperrt. Prüfen Sie den Server und alle externen Filter. Ob der Socket lauscht, lässt sich auf dem Server bestätigen. Manche Unternehmensnetze und öffentlichen Netze blockieren QUIC absichtlich. Ein fehlgeschlagener Test aus einem Netz beweist daher keinen Serverfehler: Wiederholen Sie ihn aus einem anderen.
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443Ist das neue Protokoll schneller?
HTTP/3 hilft am meisten bei Verbindungen mit Paketverlusten oder wechselnden Netzen, weil ein verlorenes Paket andere Datenströme nicht aufhält. Bei einer guten Kabelverbindung kann der Unterschied gering ausfallen und die CPU-Auslastung des Servers höher sein. Messen Sie Ihren eigenen Anwendungsfall, statt einen Gewinn vorauszusetzen, und halten Sie HTTP/2 für Clients bereit, die UDP nicht nutzen können.
Der HTTP/3-Test in CH-J Server Manager
Server Diagnostics bringt einen HTTP-Client mit; der Test hängt daher nicht vom curl des Systems ab. HTTP/3 wird erst nach einer abgeschlossenen QUIC-Übertragung als bestätigt gemeldet; Alt-Svc gilt lediglich als Ankündigung. Bei einem UDP-Timeout bleibt die Serverunterstützung laut Meldung ungeprüft, denn die Ursache kann im Netz zwischen Ihnen und dem Server liegen. Ein Rückfall auf ein anderes Protokoll zählt nicht als Erfolg.