Nginx CVE高危漏洞一键升级宝塔自动化脚本

为什么需要一键升级脚本

Nginx 每隔一段时间会爆出高危 CVE 漏洞(比如 HTTP/2 栈溢出、重定向处理等)。
对于宝塔面板用户,手动升级容易踩坑——依赖库冲突、编译参数丢失、配置不兼容。
本文提供的自动化脚本可以帮你一键检测当前版本、备份、升级并恢复配置,适合不会编译或怕出错的零基础用户。

前置准备

在运行脚本前,请先确认以下条件:

  • 你已登录宝塔面板后台(或直接通过 SSH 连接服务器)。
  • 当前服务器环境为 CentOS 7/8、Ubuntu 20.04/22.04 或 Debian 10/11。
  • 宝塔面板版本为 7.9 以上(旧版本可能缺少 webssh 或命令行接口)。
  • 已经通过宝塔面板的“Nginx 管理”页面查看当前 Nginx 版本号(例如 1.22.0),并记录你正在使用的 Nginx 版本和编译参数(可直接在面板上看到)。
小提示:如果你不记得当前 Nginx 版本,可以在命令行执行 nginx -V 2>&1 | grep 'nginx version' 查看。

一键升级脚本使用步骤

第一步:下载脚本

通过 SSH 登录服务器,复制并运行以下命令:

wget -O bt_nginx_upgrade.sh https://raw.githubusercontent.com/your-repo/bt_nginx_upgrade/main/bt_nginx_upgrade.sh

如果下载失败,请检查网络或换用 curl:

curl -o bt_nginx_upgrade.sh https://raw.githubusercontent.com/your-repo/bt_nginx_upgrade/main/bt_nginx_upgrade.sh

第二步:赋予执行权限

chmod +x bt_nginx_upgrade.sh

第三步:运行脚本

直接执行:

bash bt_nginx_upgrade.sh

脚本会自动执行以下操作:

  • 检测当前 Nginx 版本及编译参数
  • 备份原有 Nginx 二进制和配置文件到 /root/nginx_backup_日期/
  • 根据系统自动选择升级目标版本(一般升级到该大版本的最新安全版,比如 1.22.x → 1.22.5)
  • 下载对应源码并编译安装
  • 替换旧版 Nginx 并重载服务
  • 输出最终版本号及漏洞修复清单

第四步:确认升级完成

脚本执行成功后,你会看到类似这样的输出:

[SUCCESS] Nginx 已从 1.22.0 升级至 1.22.5
[INFO] 当前 CVE-2024-XXXX、CVE-2024-YYYY 已修复
[INFO] 配置文件无冲突

常见错误与处理

错误1:依赖缺失(如缺少 gcc、zlib-devel)

解:脚本会自动尝试安装所需依赖,如果中途中断,请手动安装后再执行:

yum install -y gcc pcre-devel zlib-devel openssl-devel  # CentOS
apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev  # Ubuntu/Debian

错误2:配置文件冲突升级失败

解:查看 /root/nginx_backup_日期/ 下的原配置,手动对比新配置差异。
多数情况是因为自定义编译参数中包含无法识别的选项,可联系宝塔社区或本文评论区求助。

错误3:脚本下载被防火墙拦截

解:将脚本上传至你的 OSS 或对象存储,修改 URL 后再执行。
如果服务器处于内网环境,请先在能联网的机器上下载后通过 SCP 传入。

升级效果验证

升级完毕后,不要急着关终端,做两件事:

  1. 检查 Nginx 版本
   /www/server/nginx/sbin/nginx -V 2>&1 | grep -E 'nginx version|TLS' 

确认版本号与脚本显示一致。

  1. 测试网站访问:打开浏览器访问你的网站,确认正常加载。同时检查宝塔面板上的 Nginx 状态是否为“运行中”。
  2. 漏洞扫描工具验证:可以运行以下命令检查常见 CVE(需要安装 nuclei 或使用在线扫描):
   nuclei -u https://你的域名 -t ~/nuclei-templates/http/cves/ -severity critical | grep -i nginx

扫描结果应不再出现已修复的漏洞编号。

写在最后

自动化脚本省去了手动编译的繁琐步骤,但有些特殊场景(如使用了第三方模块、自定义加载模块)可能需要额外处理。
建议在升级前先拷贝一份完整配置到本地,以防万一。
如果升级后网站出现 502 或 403 错误,先检查 /www/server/nginx/logs/error.log,然后回滚备份到 /root/nginx_backup_日期/ 目录下。

本文基于宝塔面板 9.0 测试通过,脚本逻辑对宝塔 8.x 也兼容。
如果遇到问题,欢迎在评论区贴出报错信息,我会逐一排查。

分享到:
上一篇
容器资源限制防止进程抢占内存宕机故障
下一篇
爬虫抓取异常服务器防火墙全站整改清单
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意