LNMP 环境下 Nginx 1.26.0 开启 HTTP/3 QUIC 支持

前几天 Nginx 1.26.0 主线版发布了,明月总算抽出时间更新了,那么自然的也要尝试一下开启 HTTP/3 QUIC 支持了,今天就给大家分享一下。对于我们的网站来说开启 HTTP/3 QUIC 最大的好处是页面载入速度的提升,尤其是在支持 HTTP/3 QUIC 的浏览器下表现相当的出众,页面间的切换几乎都是闪现。

Nginx 自从 1.25.X 主线版开始就已经支持 HTTP/3 QUIC 了,这次 Nginx 1.26.0 算是进一步完善了 HTTP/3 QUIC,要在 Nginx1.26.0 里开启 HTTP/3 QUIC 支持,我们只需要升级到 Nginx 1.26.0 的时候加入--with-http_v3_module这个编译参数即可,像 LNMP 一键安装包、宝塔面板里都是如此。注意,默认升级 Nginx 1.26.0 是没有这个编译参数的,必须要手动添加这个参数。参加这个参数后编译升级 Nginx 过程会相对增加,所以大家耐心等待即可。

编译完成后,你的 Nginx 1.26.0 就已经支持 HTTP/3 QUIC 了,我们就可以在 Nginx 站点配置文件里开启 HTTP/3 QUIC 了,在 Nginx 站点配置文件里添加listen 443 quic reuseport;来增加监听 443 端口的 UDP 协议(这个大家可以参考【OpenLiteSpeed 如何正确的开启 HTTP/3 QUIC】一文里专门强调的开启 443 端口 UDP 协议方法),如下图所示:

可以看到添加完成后是两条listen,这就对了,要的就是这个效果。并且就算你有多个站点,也只需要添加这一次,其他站点 Nginx 配置文件里就不用添加这段了。只需要同样的添加下面的语句:

复制代码
#开启 HTTP/3 QUIC 支持
add_header Alt-Svc 'h3=":443"; ma=86400';
ssl_early_data on;

就可以了,保存配置文件,重启 Nginx 就完成开启 HTTP/3 QUIC 了。去 HTTP/3 CHECK 检测你的网址看看是不是已经支持 HTTP/3 QUIC 了:

浏览器对 HTTP/3 QUIC 的支持情况,据明月自己实测手机端 Edge、国内 360 极速浏览器都是支持的,开启 HTTP/3 QUIC 后,首次载入网页可能会存在没有生效,但只要再次重新载入页面就会显示是 QUIC 了

这就是在手机端 Edge 上显示效果

这是 PC 端 360 极速浏览器上的现实效果

有站长说国内运营商不支持 HTTP/3 QUIC 或者说封杀 HTTP/3 QUIC,明月实测后发现并不是这样的,有些地区出现浏览器打开开启 HTTP/3 QUIC 支持的站点不显示"该连接使用 QUIC"的罪魁祸首其实是本地电脑的 DNS 缓存过于陈旧造成的(因为 HTTP/3 QUIC 需要 443 端口支持 UDP 协议,都是单独开启的,所以就要求 DNS 解析记录必须是及时更新的),这个我在【亲,你有多久没有清理过你电脑的 DNS 缓存了?】一文里专给大家讲过了,有兴趣的可以移步去了解一下,定期清理一下自己电脑的 DNS 缓存尤其是在国内绝对是个好习惯的。

浏览器开启 HTTP/3 QUIC 支持的方法

Google Chrome - 在浏览器上访问 chrome://flags/#enable-quic,找到"Experimental QUIC protocol",并启用之(Enabled)。

Microsoft Edge - 在浏览器上访问 edge://flags/#enable-quic,找到"Experimental QUIC protocol",并启用之(Enabled)。

Firefox - 在浏览器上访问 about:config,然后搜索"network.http.http3.enable",并点击对应行末尾的切换图标,启用之(true)。

Safari - 最新版本的 Safari 已经自动支持 HTTP/3,无需任何额外配置。

对于使用了国内 CDN 的站点来说,这个 Nginx 里开启 HTTP/3 QUIC 后可能是没有效果的,因为还需要 CDN 层面的支持,国内支持 HTTP/3 QUIC 的好像只有七牛、又拍云,国外 CloudFlare 免费支持 HTTP/3 QUIC 开启的,并且只要 CDN 支持 HTTP/3 QUIC,源站开没开启 HTTP/3 QUIC 都是可以的,所以本文更多的是处于技术学习的范畴了,毕竟现在网站没有 CDN 的保护是不敢想象的,裸奔的服务器和网站在现在的国内互联网生态里太少见了。

相关推荐
麦a~M了M1 小时前
ansible
linux·运维·ansible
2501_906314322 小时前
MCP-RAG 服务器:完整设置和使用指南
运维·服务器
QQ_4376643143 小时前
Linux下可执行程序的生成和运行详解(编译链接汇编图解)
linux·运维·c语言·汇编·caffe
搬码临时工3 小时前
远程连接电脑的方法?异地远程桌面连接和三方软件实现
运维·服务器·网络·物联网·电脑·远程工作
窦再兴3 小时前
来一个复古的技术FTP
linux·运维·服务器
梦在深巷、3 小时前
nginx配置之负载均衡
运维·nginx·负载均衡
iRayCheung3 小时前
Kind方式部署k8s单节点集群并创建nginx服务对外访问
nginx·kubernetes·kind
矿工学编程3 小时前
.NET 8 kestrel 配置PEM,实现内网https
网络协议·http·https
小黑_深呼吸4 小时前
Prometheus实战教程:k8s平台-Mysql监控案例
运维·学习·kubernetes·prometheus
kaixiang3004 小时前
sqli-labs靶场29-31关(http参数污染)
网络·网络协议·http