截止目前宝塔Linux面板9.5,软件商城里面的nginx,无论什么版本进行编译,使用的OpenSSL版本都是1.1.1,以目前最新NGINX 1.26.2 为例,使用nginx -V
可查看编译详情:
对于 Nginx 启用 HTTP3 而言,OpenSSL 1.1.1q 可以使用,但出于兼容性与性能优化考虑,建议将它替换成 OpenSSL 3.3 + 或 BoringSSL(由 Google 维护的 OpenSSL 分支)。
站长推荐使用 OpenSSL 3.3+,因为它相较于其它分支被更多的系统和应用采用,但请注意,现版本是 dev 开发者版本,如果使用过程出现问题还请继续使用宝塔官方的编译版本。
升级理由
使用 OpenSSL 3.3+ 相比于 OpenSSL 1.1.1,对 QUIC 的支持确实有了显著的提升,主要体现在以下几个方面:
QUIC 协议的进阶支持:OpenSSL 3.3 对 QUIC 提供了更全面的支持,包括对 qlog 跟踪 QUIC 连接的能力,这意味着开发者可以更好地调试和监控 QUIC 连接的状态。
管理 QUIC 连接空闲超时的API:新增的 API 允许更细粒度地控制 QUIC 连接的生命周期,例如设置连接在无数据传输后的空闲超时时间,提高了资源管理的灵活性。
流处理与连接性能优化:通过引入新的优化措施,OpenSSL 3.3 改进了 QUIC 流的处理方式和连接的整体性能,有助于提升基于 QUIC 应用的响应速度和吞吐量。
QUIC 服务器端增强:虽然 OpenSSL 3.2 系列开始增加了对 QUIC 客户端的支持,但 OpenSSL 3.3 进一步增强了 QUIC 服务器端的功能,使得服务器实现更加成熟稳定。
高级 API 功能:除了QUIC本身的支持外,OpenSSL 3.3还引入了其他高级API,这些API可能间接影响QUIC的实现,比如对加密算法的优化,特别是针对特定平台(如 Microsoft Azure Cobalt 100、ARM Neoverse V1/V2 处理器、Apple Silicon M3 以及 LoongArch64 )的硬件加速支持,这些都能提升QUIC数据传输的安全性和效率。
综上所述,OpenSSL 3.3 在 QUIC 支持上不仅提供了更全面的功能,还在性能优化、调试便利性以及跨平台兼容性方面取得了进步。
升级步骤
该方法属于重新编译NGINX,不支持在原有版本进行升级,还请卸载原有的NGINX软件。
方法,软件商店中卸载掉现有nginx,(如启动了宝塔加固,请关闭后再操作)
下载新版OpenSSL
cd /www/servergit clone https://github.com/openssl/openssl.git
修改宝塔的NGINX安装脚本
cd /www/server/panel/installwget -O zzbnginx.sh https://dg2.bt.cn/install/3/nginx.sh
编辑 zzbnginx.sh 文件(可使用面板自带的编辑器),搜索关键词if [ -z "${GMSSL}" ]; then
快速定位:
if [ -z "${GMSSL}" ]; then TLSv13_NGINX=$(echo ${nginxVersion} | tr -d '.' | cut -c 1-3) if [ "${TLSv13_NGINX}" -ge "115" ] && [ "${TLSv13_NGINX}" != "181" ]; then opensslVer="1.1.1w" else opensslVer="1.0.2u" fi # if [ "$version" == "1.23" ];then # opensslVer="3.0.5" # fi wget -O openssl.tar.gz ${download_Url}/src/openssl-${opensslVer}.tar.gz tar -xvf openssl.tar.gz mv openssl-${opensslVer} openssl rm -f openssl.tar.gz else
将这部分代码替换为:
if [ -z "${GMSSL}" ]; then cp -r /www/server/openssl . cd openssl ./config make cd .. else
保存后,执行以下指令编译安装 Nginx。(注意,编译安装都比较久,具体时间看你服务器性能哦!)
这里选择的是 1.26.2 版,这是当前 Nginx 支持 HTTP3 最稳定的版本,如未来 1.27 成为稳定版可将 1.26 替换成 1.27。注意后面的小版本号不要输入,当前输入 1.26 即等于 1.26.2 版。
安装完成后,使用 nginx -V
查看编译详情:
以后如 Nginx 发布了新的稳定版,则需要重新下载宝塔原版的 Nginx 安装脚本再按本教程方法修改后安装,除非宝塔官方升级了安装脚本中的 OpenSSL 版本就无需修改了。
建议
这里升级的 OpenSSL 版本仅适用于 Nginx,并不改变服务器操作系统中的版本。
因 OpenSSL 3.5.0 及以上版本发布不久,为了确保兼容性,建议升级至较新的服务器系统与相关软件。
启用 HTTP3 的同时建议启用 Brotli 压缩。
站长撰写本文所用的系统环境为:Debian 12.0 64bit、宝塔 Linux 面板 9.5。
Nginx HTTP3 模块的优化建议
有关于 ngx_http_v3_module 详细介绍可参考:Nginx 的官方文档。
如果是 Nginx 1.26+,可将宝塔站点配置中的参数做如下调整:
add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';改为:add_header Alt-Svc 'h3=":443"; ma=86400,h3-29=":443"; ma=86400,h3-Q050=":443"; ma=86400,quic=":443"; ma=86400; v="46,43"';
升级 OpenSSL 版本后建议添加:
ssl_early_data on;
该指令可以在 server 块中,例如:加在 ssl_session_timeout
指令下方。
如服务器的性能较强,CPU 与内存足够,还可以在 http 块(即宝塔面板>Nginx>设置>配置修改)中添加以下指令
http3_max_concurrent_streams 256;http3_stream_buffer_size 128k;
http3_max_concurrent_streams
这个指令是用来限制在单个 HTTP/3 连接上可以同时处理的最大流数量。默认值 128
意味着一个单一的 HTTP/3 连接可以同时承载最多 128 个双向数据流。
http3_stream_buffer_size
指令用于设置 HTTP/3 流的缓冲区大小。这个缓冲区用于存储待发送或已接收但尚未处理的数据。其默认值为 64k,增加缓冲区大小可以减少 I/O 操作的频率,可能对性能有所提升,特别是在处理大块数据传输时。
不过需要注意的是:这两个参数的值越大,占用的内存较多。
还没有评论,来说两句吧...