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 的保护是不敢想象的,裸奔的服务器和网站在现在的国内互联网生态里太少见了。

相关推荐
索迪迈科技16 分钟前
HTTP中Payload的含义解析
网络·网络协议·http
霍格沃兹软件测试开发22 分钟前
AI 测试平台新功能揭秘:自动化测试用例运行的奥秘
运维·自动化·测试用例
小阳睡不醒1 小时前
小白成长之路-jenkins使用pipline部署
运维·jenkins
liulilittle1 小时前
HTTP/3.0:网络通信的技术革新与性能飞跃
网络·网络协议·http·https·quic·流媒体·通信
fasewer2 小时前
玄机--windows日志分析
运维·服务器·windows·网络安全
Linux运维技术栈2 小时前
域名网页加载慢怎么解决:从测速到优化的全链路性能优化实战
运维·网络·nginx·性能优化·cloudflare
linux修理工3 小时前
n1 Armbian OS 24.11.0 noble 安装suricata
linux·运维·服务器
2501_916013743 小时前
HTTPS 抓包难点分析,从端口到工具的实战应对
网络协议·http·ios·小程序·https·uni-app·iphone
bug攻城狮3 小时前
CentOS 7 出现 “Could not resolve host“ 错误的修复方案
linux·运维·centos
feifeigo1233 小时前
CentOS系统管理:useradd命令的全面解析
linux·运维·centos