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,三十秒出结果。