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

相关推荐
gywl1 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
青木沐1 小时前
Jenkins介绍
运维·jenkins
WTT00112 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
苹果醋32 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
某柚啊2 小时前
Windows开启IIS后依然出现http error 503.the service is unavailable
windows·http
_oP_i2 小时前
HTTP 请求Media typetext/plain application/json text/json区别
网络协议·http·json
日记跟新中3 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭3 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
BUG 4043 小时前
Linux——Shell
linux·运维·服务器