随笔

启用 HTTP/3

啊没错,距离升级 HTTP/2 不久之后,又再次升级了 HTTP/3,这次因为是抢先体验版,所以安装时会略微麻烦。

六月份 HTTP/3 正式发布,提案编号 RFC 9114,规范的发布代表着可以进入生产环境了。

Setup

nginx 官网已经发布 1.23.1 版本,但是变更日志没有看到 HTTP/3 相关的东西,然后翻到 roadmap 最终版在 04/11/23,而目前还是在 quic 分支上,必须自己编译安装。

roadmap

所以为了更快的体验到 HTTP/3 也只好手动安装了,安装过程可以参考这里,中间可能会报错缺少各种库,安装对应的库即可,比如我这里安装了以下这些库:

apt install libpcre3 libpcre3-dev
apt install openssl libssl-dev
apt install zlib1g zlib1g-dev

Config

listen     443 http3 reuseport;
...
ssl_protocols     TLSv1.3;
...
add_header Alt-Svc 'h3=":443"; ma=86400';

Restart

# 可以先用 reload 尝试,这里因为 reload 无效才选择 stop
nginx -t
nginx -s stop
nginx

Verify

首先是看端口是否在监听了 ls-f -i:443,如图所示 UDP 已经在监听了,证明配置正确并启动成功。

lsof -i:443

然后是客户端这里,因为新协议嘛,所以要服务端和客户端都支持,可以通过 Chrome Cananary 或者 Chrome flag 开启 QUIC 来测试。

browser request

如上图中 Protocol 显示 h3 即代表 HTTP/3。

如果没有客户端也可以借用三方服务验证:https://http3check.net/

third check

另外,如果你的云服务器是有防火墙的,可以检查下防火墙规则是否开启了 UDP 协议的 443 端口。

被这个坑了好久,配置好了,header 头也已经返回,可是就是不行,睡完午觉后才想起来还有服务器的云防火墙要打开。

参考

本文链接:https://note.lilonghe.net/post/enable-http3.html

-- EOF --