首页 CMS建站 正文

网站运维:升级宝塔Nginx的OpenSSL版本并优化HTTP3性能

为什么要升级宝塔 Nginx 的 OpenSSL 版本?

经笔者实际测试,在 Linux 面板 8.2.0 中,不论你的服务器系统是什么版本的 OpenSSL,宝塔中编译安装的 Nginx 使用的是 OpenSSL 1.1.1,以 Nginx 1.26.1 安装为例,使用 nginx -V 查看编译详情:


宝塔默认安装的 OpenSSL 版本

宝塔默认安装的 OpenSSL 版本


对于 Nginx 启用 HTTP3 而言,OpenSSL 1.1.1q 可以使用,但出于兼容性与性能优化考虑,建议将它替换成 OpenSSL 3.3 + 或 BoringSSL(由 Google 维护的 OpenSSL 分支)。

Nginx 官方给出的建议是 BoringSSL、LibreSSL 或 QuicTLS (给出建议的时候 OpenSSL 3.3 还没有发布)。

笔者推荐使用 OpenSSL 3.3+,因为它相较于其它分支被更多的系统和应用采用。

升级 OpenSSL 会有哪些方面的好处

使用 OpenSSL 3.3+ 相比于 OpenSSL 1.1.1,对 QUIC 的支持确实有了显著的提升,主要体现在以下几个方面:

  1. QUIC 协议的进阶支持:OpenSSL 3.3 对 QUIC 提供了更全面的支持,包括对 qlog 跟踪 QUIC 连接的能力,这意味着开发者可以更好地调试和监控 QUIC 连接的状态。

  2. 管理 QUIC 连接空闲超时的API:新增的 API 允许更细粒度地控制 QUIC 连接的生命周期,例如设置连接在无数据传输后的空闲超时时间,提高了资源管理的灵活性。

  3. 流处理与连接性能优化:通过引入新的优化措施,OpenSSL 3.3 改进了 QUIC 流的处理方式和连接的整体性能,有助于提升基于 QUIC 应用的响应速度和吞吐量。

  4. QUIC 服务器端增强:虽然 OpenSSL 3.2 系列开始增加了对 QUIC 客户端的支持,但 OpenSSL 3.3 进一步增强了 QUIC 服务器端的功能,使得服务器实现更加成熟稳定。

  5. 高级 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 的 OpenSSL 版本具体步骤

下载新版  OpenSSL

cd /www/server
git clone git://git.openssl.org/openssl.git
或
git clone https://github.com/openssl/openssl.git

如果以上方式下载失败(境内服务器)可从官网下载 3.3.1 或以上版本,上传至服务器并解压至/www/server目录。

注意:不论下载的是哪个版本,需要将目录改名为:/www/server/openssl,否则后面的步骤会出错。

修改宝塔面板的 Nginx 安装脚本

首先下载宝塔原版的 Nginx 安装脚本:

cd /www/server/panel/install
wget -O zzbnginx.sh https://dg2.bt.cn/install/3/nginx.sh

编辑 zzbnginx.sh 文件(可使用面板自带的编辑器),在大约 248 行找到如下内容:

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.1q"
	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,如以前已安装 Nginx 则先卸载。

sh zzbnginx.sh install 1.26

这里选择的是 1.26.1 版,这是当前 Nginx 支持 HTTP3 最稳定的版本,如未来 1.27 成为稳定版可将 1.26 替换成 1.27。

注意后面的小版本号不要输入,当前输入 1.26 即等于 1.26.1 版。

安装完成后,使用 nginx -V 查看编译详情:


Nginx 1.26.1 使用 OpenSSL 3.4 编译成功

Nginx 1.26.1 使用 OpenSSL 3.4 编译成功


以后如 Nginx 发布了新的稳定版,则需要重新下载宝塔原版的 Nginx 安装脚本再按本教程方法修改后安装,除非宝塔官方升级了安装脚本中的 OpenSSL 版本就无需修改了。

注意事项

这里升级的 OpenSSL 版本仅适用于 Nginx,并不改变服务器操作系统中的版本。

因 OpenSSL 3.3.1及以上版本发布不久,为了确保兼容性,建议升级至较新的服务器系统与相关软件。

启用 HTTP3 的同时建议启用 Brotli 压缩。

有关于在 Nginx 中配置 QUIC/HTTP3 的方法可参考:Nginx 启用 QUIC 与 Brotli 的完整教程

笔者撰写本文所用的系统环境为:Debian 12.0 64bit、宝塔 Linux 面板 8.2.0。

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 操作的频率,可能对性能有所提升,特别是在处理大块数据传输时。

不过需要注意的是:这两个参数的值越大,占用的内存较多。

非特殊说明,本文由99开发网(www.99kaifa.vip)原创或收集发布,技术无价旨在分享。

相关推荐

发布评论