Essere annunciato non significa funzionare
Un server annuncia HTTP/3 nell’intestazione di risposta Alt-Svc, che il client riceve tramite HTTP/1.1 o HTTP/2. L’intestazione è solo una promessa. HTTP/3 usa QUIC su UDP, quindi la pagina può caricarsi normalmente anche con UDP completamente bloccato, mentre il browser resta su HTTP/2 senza segnalarlo.
curl -sI https://server.example/ | grep -i alt-svcConferma un trasferimento reale
Solo una richiesta completata tramite QUIC conferma HTTP/3. Usa una versione di curl compilata con il supporto HTTP/3; molti pacchetti di sistema ne sono privi e quindi rifiutano l’opzione, il che non dice nulla sul server. Nel browser apri gli strumenti per sviluppatori e leggi la colonna Protocol, che per una richiesta di questo tipo mostra h3. Alla prima visita il browser potrebbe usare HTTP/2, quindi ricarica la pagina.
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/Controlla la configurazione di NGINX
NGINX necessita di un listener QUIC accanto a quello TCP e sia la versione sia la compilazione devono supportarlo. È richiesto TLS 1.3, perché QUIC lo usa direttamente. Verifica la configurazione prima di ricaricarla. Il valore ma in Alt-Svc è il tempo in secondi per cui i client ricordano la promessa: durante i test usa quindi un valore breve.
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 -tApri UDP 443 lungo tutto il percorso
La causa più frequente dei problemi è un firewall che consente TCP 443 ma non UDP 443. Controlla il server e ogni filtro esterno. Puoi verificare sul server che il socket sia in ascolto. Alcune reti aziendali e pubbliche bloccano QUIC deliberatamente, quindi un test fallito da una sola rete non dimostra un problema del server: ripetilo da un’altra rete.
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443Il nuovo protocollo è più veloce?
HTTP/3 aiuta soprattutto sulle connessioni con perdita di pacchetti o quando si cambia rete, perché un pacchetto perso non blocca gli altri flussi. Su una buona connessione cablata la differenza può essere minima e l’uso della CPU sul server può aumentare. Misura il tuo caso anziché dare per scontato un miglioramento e mantieni disponibile HTTP/2 per i client che non possono usare UDP.
Il test HTTP/3 in CH-J Server Manager
Server Diagnostics include un client HTTP, quindi il test non dipende dal curl di sistema. Segnala HTTP/3 come confermato solo dopo un trasferimento QUIC completato e considera Alt-Svc solo un annuncio. In caso di timeout UDP indica che il supporto del server resta da verificare, perché la causa potrebbe essere la rete tra te e il server, e non considera un successo il ripiego su un altro protocollo.