使用 HTTP/3

安装

由于 HTTP/3 特性还未合入到我们的主线版本,如果需要使用 HTTP/3,需要在安装节点时指定安装支持 HTTP/3 的版本。

注意:如果机器上之前安装过主线版本的节点,要先在 Admin 上移除这个节点,然后卸载主线版本再进行安装。

HTTP/3 版本的安装方式和主线版本安装类似,只需要在执行安装脚本时指定 h3 参数:

sudo /bin/bash install-edge-node.sh h3

升级和降级操作也类似,在执行脚本时指定 h3 参数:

sudo /bin/bash upgrade-edge-node.sh h3

# OLD-PACKAGE-VERSION: downgrade to this version
sudo /bin/bash downgrade-edge-node.s  OLD-PACKAGE-VERSION h3

其他步骤可以参考 Edge 安装文档

启用 TLSv1.3 协议支持

HTTP/3 需要在 全局配置/通用 中启用 TLSv1.3 的协议支持

Screenshot

配置 HTTP/3

全局配置/集群分区 中,为分区中添加 HTTP/3 的监听端口。因为 HTTP/3 监听的是 UDP 端口,这里添加和 HTTPS 相同的 443 端口。

注意:请确认安全防火墙是否开放了 443 UDP 端口。

Screenshot

Screenshot

端口配置完成之后,通过页面规则添加 Alt-Svc 响应头。告诉客户端当前提供 HTTP/3 服务的端口。

Alt-Svc 响应头格式如下:

Alt-Svc: <protocol-id>=<alt-authority>; ma=<max-age>

Example:

Alt-Svc: h3-25=":443"; ma=3600
Alt-Svc: h3=":443"; ma=3600, h3-25=":443"; ma=3600, h3-29=":443"; ma=3600

我们刚刚添加的 HTTP/3 端口为 443,因此这里可以填写 h3=":443"; ma=3600, h3-25=":443"; ma=3600, h3-29=":443"; ma=3600

Screenshot

验证 HTTP/3

配置完成后,我们可以通过 cURL 指定 HTTP/3 协议验证现有的应用。

例如:

# 需要编译支持 HTTP/3 的 curl, 可以参考这个文档: https://curl.se/docs/http3.html
curl -i --http3 https://your-domain.com/

curl -i --alt-svc altsvc.cache https://your-domain.com/

# 还可以直接使用 Docker 镜像中的 curl
sudo docker run -it --rm ymuski/curl-http3 curl -i --http3 https://your-domain.com/

注意:如果要在浏览器上验证 HTTP/3,确保浏览器已经启用 HTTP/3 特性。