WordPress优化老生常谈了,除了之前老白说过的服务器前端、后端优化之外,通过网络连接协议去优化也是重要的手段。今天老白博客就给大家分享下宝塔面板如何使用传输速度更快、安全性能更高的http3/quic协议,基于手动编译nginx1.25来实现,详细教程如下(解决了[warn] the listen ... http2报错的提示):
1.http3/quic简介
HTTP/3 是 HTTP/2 的后继者,旨在解决 HTTP/2 在实际应用中的一些问题和限制,同时充分利用现有网络技术的优势。以下是 HTTP/3 的一些优缺点:
1.1 优点
- 基于 QUIC 协议:HTTP/3 基于 QUIC 协议,这是一种基于传输层安全(TLS)的快速、低延迟的传输协议。QUIC 相较于 TCP,减少了网络延迟,提高了页面加载速度。
- 多路复用:HTTP/3 支持多路复用,允许多个请求和响应在一个连接上进行,避免了 HTTP/2 中的队头阻塞(HOL)问题。
- 头部压缩:HTTP/3 仍然采用 HPACK 头部压缩算法,与 HTTP/2 相比,进一步减少了网络传输的数据量。
- 0-RTT 连接建立:QUIC 协议支持 0-RTT 连接建立,这意味着在之前的连接上进行过通信的客户端和服务器可以在短时间内重新建立连接,从而减少建立连接所需的时间。
- 更好的加密和安全:HTTP/3 基于 TLS 1.3,提供了更强的加密和安全性,包括对 AEAD 加密、前向保密(PFS)和 0-RTT 连接建立的支持。
1.2 缺点
- 浏览器兼容性:虽然主流浏览器已经开始支持 HTTP/3,但普及程度还不及 HTTP/2。但是大部分都兼容了,在线查看:https://caniuse.com/http3
- 网络设备支持:在网络设备(如防火墙、路由器等)中,HTTP/3 的支持还不够完善。这可能导致部分网络环境中的 HTTP/3 连接出现问题。
- 服务器资源占用:QUIC 协议相较于 TCP,在处理大量连接时可能会占用更多的服务器资源。这可能对服务器性能和稳定性产生一定影响。
- 迁移成本:将现有的 HTTP/2 服务迁移到 HTTP/3 可能需要一定的成本和开发工作,尤其是在使用非标准库或自定义协议的情况下。
1.3 总结
总的来说,HTTP/3 在性能、安全性和效率方面具有显著优势,缺点的影响并不大,对于追求WordPress网站速度的朋友来说值得尝试。
一句话 适合老白这样的瞎折腾党
2.宝塔面板开启http3/quic
非宝塔面板编译安装教程:https://r2wind.cn/articles/20230526.html
openlitespeed+cyberpanel面板开启方法:https://www.xcbtmw.com/29567.html#h49
2.1 编译安装nginx1.25
随着最近 Nginx-Quic 分支被合并到了 Nginx 主线,Nginx 1.25.0 版本官方二进制包已经支持 Quic/HTTP3。
但是宝塔官方软件商店目前还未上架该版本,因此需要手动编译安装。在ssh里面执行以下命令
wget https://download.bt.cn/install/0/nginx5.sh
bash nginx5.sh install 1.25
等待命令执行完毕 进面板查看 Nginx版本是否为1.25
2.2 解决http2报错
如果提示以下报错
[warn] the listen ... http2
请根据报错的站点内配置文件把 ssl http2 中的http2去掉
如果想要开启HTTP2的话 请看下面的配置方法
2.3 http2/quic站点配置
在所有的站点域名中,只需要有一个 server 域中配置 reuseport 选项即可
listen 443 ssl;
listen 443 quic reuseport;
listen [::]:443 ssl;
listen [::]:443 quic reuseport;
http2 on;
其他的站点如下配置即可
listen 443 ssl;
listen 443 quic;
listen [::]:443 ssl;
listen [::]:443 quic;
http2 on;
在每一个对应站点的Nginx配置文件 大概26 27行添加以下代码
ssl_early_data on;
add_header Alt-Svc 'h3=":443"; ma=2592000,h3-29=":443";
然后重启 Nginx即可生效!
3. 防火墙和浏览器配置
3.1 防火墙配置
防火墙将443端口UDP开放 宝塔在面板-左侧安全里面配置
腾讯云 / 阿里云 / 华为云 等 添加安全组即可
3.2 浏览器配置
谷歌Chrome浏览器 访问:chrome://flags/
启用:Experimental QUIC protocol (enable-quic)
微软新版Edge浏览器 访问:edge://flags
启用:Experimental QUIC protocol 设置为“Enabled”
火狐Firefox浏览器 访问:about:config
启用:network.http.http3.enabled
4. 常见问题
4.1 编译lua_cjson报错
编译安装 Nginx 1.25 时虽然宝塔面板没有报错,但日志中有以下错误信息(不会影响使用):
cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/include/luajit-2.0 -fpic -o lua_cjson.o lua_cjson.c
lua_cjson.c:43:10: fatal error: lua.h: No such file or directory
43 | #include <lua.h>
| ^~~~~~~
compilation terminated.
make: *** [Makefile:89: lua_cjson.o] Error 1
cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/include/luajit-2.0 -fpic -o lua_cjson.o lua_cjson.c
lua_cjson.c:43:10: fatal error: lua.h: No such file or directory
43 | #include <lua.h>
| ^~~~~~~
compilation terminated.
make: *** [Makefile:89: lua_cjson.o] Error 1
详细帖子:https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=128139&highlight=1.25
解决方法,完整的正确安装命令如下:
wget -O lua-cjson-2.1.0.9.zip https://github.com/openresty/lua-cjson/archive/refs/tags/2.1.0.9.zip
unzip lua-cjson-2.1.0.9.zip
cd lua-cjson-2.1.0.9/
make LUA_INCLUDE_DIR=/usr/local/include/luajit-2.1 CJSON_LDFLAGS='-shared -lluajit-5.1' LUA_VERSION=5.1
cp cjson.so /usr/local/lib/lua/5.1/
4.2 禁用http1请求
启用http3后发现网站日志有大量http1.1请求,通过第三方测试也是http1.1
问题来源:https://www.bt.cn/bbs/thread-129581-1-1.html
暂无解 官方人员未回复
5. http3/quic检测
演示地址:https://test.xcbtmw.com/
HTTP3/QUIC检测地址
- https://http3.wcode.net/?q=https%3A%2F%2Ftest.xcbtmw.com%2F
- https://http3check.net/?host=https%3A%2F%2Ftest.xcbtmw.com%2F
我的第二个检测不出来,第一个可以,目前没找到原因
6. 参考教程
- https://www.toubiec.cn/1304.html
- https://r2wind.cn/articles/20230526.html
- https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=118511&highlight=http3
- https://blog.orangii.cn/2022/bt-panel-enable-http3/
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。