混乱 http/2,3 和 cloudflare

Confusion http/2,3 and cloudflare

当我在本地启动我的 API 服务器时,它服务于 http/1.1,但我发现当它部署在 VPS 上并使用 Cloudflare 进行设置时,浏览器会显示协议是 http/3。因此,客户端和 Cloudflare 之间是 http/3,Cloudflare 和 VPS 之间是 http/1。1 这是正确的吗?这意味着 http/3 仅由 DNS 提供服务,我的服务器仍然是普通的 http/1.1,我需要将其迁移到 http/2 才能得到真正的支持 http/2。 (我正在使用节点,所以它将是从 httphttp2 模块的切换)

当您的 Web 应用程序/Web API 位于 Cloudflare 后面时,Cloudflare 充当反向代理。这意味着连接有两条“腿”:

  1. 从最终用户的客户端(浏览器/移动设备 phone 等...)到 Cloudflare
  2. 从 Cloudflare 到您的原始服务器(在您的情况下是 VPS)

从用户的角度来看,他们看到了分支 (1),因此很容易启用 HTTP/2 or HTTP/3 (see documentation) 即使您的源服务器不支持它们。这是您在测试时在浏览器中看到的内容,具体取决于您在 Cloudflare 仪表板中的配置。

对于分支 (2),目前仅支持 HTTP/1.1(也如 in this Support KB). You can still optimize the setup of that leg by using features such as Argo Smart Routing or Argo Tunnel

所述