侧边栏壁纸
博主昵称
辰安

往前方的路走一步,再走一步,就会幸福

宝塔nginx 启用 HTTP3 性能优化 OpenSSl 编译升级

2025年12月29日 7阅读 0评论 0点赞

宝塔目前编译使用的OpenSSL版本都是1.1.1,以目前最新NGINX 1.28.0 为例,使用nginx -V可查看编译详情

image-20251229102839674

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

使用 OpenSSL 4.0+ 相比于 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软件。

下载新版OpenSSL

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

#下载缓慢用这个
git clone https://ghfast.top/https://github.com/openssl/openssl.git

修改宝塔的NGINX安装脚本

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

编辑 zbynginx.sh 文件(可使用面板自带的编辑器),搜索关键词if [ -z "${GMSSL}" ]; then快速定位:

image-20251229103346524

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
    elseif [ -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。

sh zbynginx.sh install 1.28

这里选择的是 1.28 版,这是当前 Nginx 支持 HTTP3 最新的版本,这个具体看自己需要。注意后面的小版本号不要输入,当前输入 1.28即等于 1.28.0 版。

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

image-20251229105748643

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

建议

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

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

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

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

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

0

—— 评论区 ——

请登录后发表评论
立即登录 用户注册
LOGIN
人生倒计时
最新评论
  • 人气很差!一条评论也没有!
舔狗日记