宝塔NGINX性能优化-升级OpenSSL提升nginx HTTP3性能

截止目前宝塔Linux面板9.5,软件商城里面的NGINX,无论什么版本进行编译,使用的OpenSSL版本都是1.1.1,以目前最新NGINX 1.26.2 为例,使用nginx -V可查看编译详情:

宝塔NGINX性能优化-升级OpenSSL提升nginx HTTP3性能

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

站长推荐使用 OpenSSL 3.3+,因为它相较于其它分支被更多的系统和应用采用,但请注意,现版本是 dev 开发者版本,如果使用过程出现问题还请继续使用宝塔官方的编译版本。

升级理由

使用 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,不支持在原有版本进行升级,还请卸载原有的NGINX软件。

方法,软件商店中卸载掉现有nginx,(如启动了宝塔加固,请关闭后再操作)

下载新版OpenSSL

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

修改宝塔的NGINX安装脚本

cd /www/server/panel/install
wget -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性能优化-升级OpenSSL提升nginx HTTP3性能

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

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

本文大部分内容转载自:宝塔NGINX优化-升级OpenSSL提升HTTP3性能-ღ星晴 (77il.cn)

版权声明

   站内部分内容来自互联网,该文仅限用于学习和研究目的。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 点击我 一经核实,立即删除。访问和下载本站内容,说明您已同意上述条款。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容