Aangekondigd is niet hetzelfde als werkend
Een server kondigt HTTP/3 aan in de Alt-Svc-responsheader, die de client ontvangt via HTTP/1.1 of HTTP/2. Die header is alleen een belofte. HTTP/3 werkt via QUIC over UDP, dus de pagina kan normaal laden terwijl UDP volledig is geblokkeerd en de browser stilzwijgend HTTP/2 blijft gebruiken.
curl -sI https://server.example/ | grep -i alt-svcBevestig een echte overdracht
Alleen een voltooid verzoek via QUIC bevestigt HTTP/3. Gebruik een curl die met HTTP/3-ondersteuning is gebouwd; veel systeempakketten hebben die ondersteuning niet en wijzen de optie dan af, wat niets over de server zegt. Open in een browser de ontwikkelaarstools en bekijk de kolom Protocol, die voor zo’n verzoek h3 toont. De browser kan bij het eerste bezoek HTTP/2 gebruiken, dus laad de pagina opnieuw.
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/Controleer de NGINX-configuratie
NGINX heeft naast de TCP-listener ook een QUIC-listener nodig, en de versie en de build moeten dit ondersteunen. TLS 1.3 is vereist, omdat QUIC het rechtstreeks gebruikt. Controleer de configuratie voordat u deze herlaadt. De waarde ma in Alt-Svc is de tijd in seconden waarin clients de belofte onthouden, dus gebruik tijdens het testen een korte tijd.
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 -tSta UDP 443 overal op het pad toe
De meest voorkomende oorzaak van mislukking is een firewall die TCP 443 wel toestaat en UDP 443 niet. Controleer de server en elk extern filter. Op de server kunt u bevestigen dat de socket luistert. Sommige bedrijfsnetwerken en openbare netwerken blokkeren QUIC bewust, dus een mislukte test vanuit één netwerk bewijst niet dat de server de oorzaak is: herhaal de test vanuit een ander netwerk.
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443Is het nieuwe protocol sneller?
HTTP/3 helpt vooral bij verbindingen met pakketverlies of wisselende netwerken, omdat een verloren pakket andere gegevensstromen niet ophoudt. Op een goede bekabelde verbinding kan het verschil klein zijn en kan het CPU-gebruik op de server hoger uitvallen. Meet uw eigen situatie in plaats van winst te veronderstellen, en houd HTTP/2 beschikbaar voor clients die geen UDP kunnen gebruiken.
De HTTP/3-test in CH-J Server Manager
Server Diagnostics heeft een meegeleverde HTTP-client, dus de test is niet afhankelijk van de curl van het systeem. HTTP/3 wordt pas als bevestigd gemeld na een voltooide QUIC-overdracht; Alt-Svc geldt alleen als aankondiging. Bij een UDP-timeout meldt de test dat ondersteuning door de server onbevestigd blijft, omdat de oorzaak het netwerk tussen u en de server kan zijn. Terugvallen op een ander protocol telt niet als succes.