HTTP/3 到底开了没,30 秒验证
HTTP/3 这几年被说得很多,真正开起来的站点没那么多。原因不是不想开,是「开了」和「生效了」之间隔着好几层。
先给结论,再去验证
强制 HTTP/3 测一次,只看两个信息:协议版本是不是 h3,失败的话是哪一类失败。
成功且版本是 h3,说明整条路通了:DNS、UDP 443、QUIC 握手、ALPN 协商,全部成立。
失败分两种。超时,通常是 UDP 被拦——安全组、防火墙、运营商,逐层排查。立刻拒绝,通常是服务端没监听 UDP 443,看服务端软件有没有编 quic 模块。
为什么默认测不出真相
浏览器和客户端都会协商。谈不拢就回落 HTTP/2,用户照样能打开,你也就不知道 h3 有没有在工作。
只有强制,才能把回落这条路堵上。这一点和强制 HTTP/2 是同一个逻辑。
三层要一起看
服务端。Nginx 需要版本够新并且编译了 quic 模块,配置里要显式开 listen 443 quic。老版本只支持 HTTP/2,配置写了也不生效。
网络。UDP 443 要放行。云厂商安全组默认往往只放 TCP,这是最常见的一处。
CDN。如果站点套了 CDN,能不能用 h3 取决于套餐和节点,源站开了也没用。用 IP 查询 看解析到的 IP 归属,先确认你测的是边缘还是源站,别把两层混在一起分析。
开了之后有什么变化
弱网和移动网络下改善明显,丢包恢复更快,连接建立少一次往返。有线宽带、低延迟场景,差别小到感觉不出来。
所以如果你的用户主要在移动端,h3 值得开;如果主要是同城办公网,优先级可以往后放。
别只看配置
配置文件是「我打算这么干」,握手结果才是「实际这么干」。这两件事之间的差距,就是运维日常。
验证成本很低,一次强制测速就够了。在 网站测速 的高级选项里选 HTTP/3,三十秒出结果。