网站测速怎么强制走 HTTP/2 或 HTTP/3
Nginx 里写了 http2 on,CDN 后台勾了 HTTP/3,剩下的问题就是:它到底生效了没有。
普通测速回答不了这个问题。它按协商走,服务端说「咱们用 HTTP/1.1 吧」,客户端就降级,结果看起来一切正常,你根本不知道中间哪一环把新协议掐掉了。
强制,是为了让降级无处可藏
高级选项里的 HTTP 版本有三档。默认协商、强制 HTTP/2、强制 HTTP/3。选强制之后,客户端只接受这个版本,握不上手就是失败,不会悄悄退回老路。
失败也是一种结果。而且往往比成功更有信息量——它告诉你这条路在某一跳断了。
强制 HTTP/2 的注意点
目标必须是 https://。HTTP/2 在浏览器里只跑在 TLS 上,填 http:// 会被拦下来或者自动改成 https。
如果强制 HTTP/2 失败但默认测试正常,通常意味着中间设备改写了 ALPN,或者源站前面的代理只支持到 1.1。先查 CDN 回源协议,再查源站配置。
强制 HTTP/3 更容易踩空
HTTP/3 跑在 QUIC 上,走 UDP 443。这条路上拦路的东西比 TCP 多得多:云厂商安全组默认只放 TCP、企业防火墙封 UDP、部分运营商对 UDP 限速。
所以强制 HTTP/3 失败,先别急着改 Nginx。按这个顺序看:安全组放没放 UDP 443、CDN 套餐包不包含 QUIC、服务端软件版本有没有编译 quic 模块。
结果在哪看
每个节点的 HTTP 详情里有「协议版本」这一项,在 网站测速 跑完就能看到,强制成功时显示的就是你指定的版本。旁边还有状态码和跳转次数,一起看能还原整次请求。
顺带说一句,想知道请求最终落在哪台机器上,用 IP 查询 看一眼解析结果最快,尤其是套了 CDN 的站,前缀 IP 归属能直接告诉你是哪家边缘节点。
别忘了回落这回事
强制 HTTP/3 失败,对真实用户未必是灾难——现代浏览器都会自动回落到 HTTP/2,页面照样打开。代价是首次连接多一次往返。
但如果你在设计阶段就指望 HTTP/3 解决弱网问题,那这个「回落」就是你没拿到的东西,该修还是得修。