Anunciar não é o mesmo que funcionar
Um servidor anuncia HTTP/3 no cabeçalho de resposta Alt-Svc, que o cliente recebe através de HTTP/1.1 ou HTTP/2. O cabeçalho é apenas uma promessa. HTTP/3 funciona sobre QUIC através de UDP, pelo que a página pode carregar normalmente com UDP completamente bloqueado, enquanto o navegador continua em HTTP/2 sem avisar.
curl -sI https://server.example/ | grep -i alt-svcConfirme uma transferência real
Só um pedido concluído através de QUIC confirma HTTP/3. Use curl compilado com suporte para HTTP/3; muitos pacotes do sistema não o têm e, nesse caso, a opção é rejeitada, o que nada diz sobre o servidor. No navegador, abra as ferramentas de programador e consulte a coluna Protocol, que mostra h3 para um pedido deste tipo. O navegador pode usar HTTP/2 na primeira visita, por isso carregue a página novamente.
curl -V | grep -i http3
curl -sS --http3-only -o /dev/null -w '%{http_version}\n' https://server.example/Verifique a configuração do NGINX
O NGINX precisa de um listener QUIC além do listener TCP, e tanto a versão como a compilação têm de o suportar. É necessário TLS 1.3, porque QUIC o usa diretamente. Verifique a configuração antes de a recarregar. O valor ma em Alt-Svc é o tempo em segundos durante o qual os clientes se lembram da promessa, por isso use um valor curto durante os testes.
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 -tAbra UDP 443 em todo o percurso
A causa mais frequente de falha é uma firewall que permite TCP 443 mas não UDP 443. Verifique o servidor e todos os filtros externos. É possível confirmar no servidor que o socket está à escuta. Algumas redes empresariais e públicas bloqueiam QUIC deliberadamente, pelo que um teste falhado a partir de uma rede não prova que a falha esteja no servidor: repita-o a partir de outra rede.
sudo ss -lunp | grep ':443'
sudo ufw allow 443/udp
sudo tcpdump -ni any udp port 443O novo protocolo é mais rápido?
HTTP/3 ajuda sobretudo em ligações com perda de pacotes ou mudanças de rede, porque um pacote perdido não atrasa os outros fluxos. Numa boa ligação por cabo, a diferença pode ser pequena e a utilização de CPU no servidor pode ser maior. Meça o seu caso em vez de presumir um ganho e mantenha HTTP/2 disponível para clientes que não possam usar UDP.
O teste HTTP/3 no CH-J Server Manager
Server Diagnostics inclui um cliente HTTP, pelo que o teste não depende do curl do sistema. Só apresenta HTTP/3 como confirmado após uma transferência QUIC concluída e trata Alt-Svc apenas como um anúncio. Se houver um timeout de UDP, indica que o suporte do servidor continua por verificar, porque a causa pode estar na rede entre si e o servidor, e não considera um sucesso o recurso a outro protocolo.