温馨提示×

centos nginx如何升级与维护

小樊
36
2025-12-27 07:45:26
栏目: 智能运维

CentOS 上 Nginx 的升级与维护指南

一 升级前准备

  • 确认安装方式与版本
    • 包管理安装:执行 rpm -q nginx;若为 源码编译:执行 which nginxnginx -V 查看路径与编译参数。
  • 备份关键数据
    • 配置:/etc/nginx;站点:/var/www/html;证书:/etc/ssl;二进制:/usr/sbin/nginx/usr/local/nginx/sbin/nginx
  • 检查与依赖
    • 系统信息:cat /etc/redhat-releaseuname -r;依赖:yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
  • 创建维护窗口与回退预案
    • 选择低峰时段,保留旧二进制与旧配置,准备快速回滚脚本。

二 升级路径

  • 方式一 YUM 包管理器升级(推荐)
    • 添加仓库(二选一)
      • EPEL:sudo yum install -y epel-release
      • 官方稳定源:创建 /etc/yum.repos.d/nginx.repo,内容如下(自动匹配 $releasever/$basearch):
        [nginx-stable]
        name=nginx stable repo
        baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
        gpgcheck=1
        enabled=1
        gpgkey=https://nginx.org/keys/nginx_signing.key
    • 执行升级与验证
      • 升级:sudo yum update nginx;指定版本:sudo yum install nginx-
      • 配置检查:sudo nginx -t;重启:sudo systemctl restart nginx;状态:sudo systemctl status nginx
  • 方式二 源码编译升级(特定版本或自定义模块)
    • 备份与取参:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_baknginx -V 复制 configure arguments
    • 编译新版本(不执行 make install):
      • 下载解压:wget http://nginx.org/download/nginx-.tar.gz && tar zxvf nginx-.tar.gz && cd nginx-
      • 配置:./configure <原参数>;编译:make
    • 平滑替换与切换
      • 语法测试:.objs/nginx -t;替换二进制:cp objs/nginx /usr/local/nginx/sbin/
      • 热升级:kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid.oldbin) → 观察无异常后 kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)
  • 回退要点
    • 包管理:立即执行 sudo yum downgrade nginx 或回滚至已保存的 rpm
    • 源码:将备份二进制 nginx_bak 拷回并发送 USR2/WINCH/QUIT 完成回滚

三 安全与版本策略

  • 及时修复高危漏洞
    • 例如修复 CVE-2025-23419Nginx ≥ 1.27.0;若 CentOS 7 的 stable 源仅到 1.26.1,可切换到 mainline 官方源以获取 1.27+
  • 降低信息泄露
    • /etc/nginx/nginx.confhttp { server_tokens off; } 隐藏版本号,执行 nginx -s reload
  • 仓库选择建议
    • 稳定优先:使用 stable 源;需要新特性或安全修复优先:使用 mainline 源(注意 mainline 变化更快)。

四 日常维护与巡检

  • 配置与语法
    • 变更前:sudo nginx -t;变更后:sudo systemctl reload nginx(零停机)。
  • 日志与监控
    • 错误日志:tail -f /var/log/nginx/error.log;访问日志按需分析;结合 systemctl status nginxcurl -I 探测后端健康。
  • 备份与自动化
    • 定期打包:0 2 * * * tar -czvf /backup/nginx_$(date +%Y%m%d).tar.gz /etc/nginx /var/www/html
  • 性能与健康
    • 核心参数:worker_processes(建议与 CPU 核数一致)、worker_connections;静态资源启用 gzip;必要时引入 CDN 与缓存策略。
  • 证书与上游
    • 证书有效期与链:openssl s_client -connect www.example.com:443 < /dev/null | openssl x509 -text
    • 上游可用性:curl -I http://backend/ | head -1,异常时联动后端与健康检查。

五 常见问题与排错

  • 配置文件语法错误
    • 修复前先 nginx -t 定位行号;回滚到上一个可用配置后再 reload
  • 平滑升级后旧进程未退出
    • 确认新 master 已接管后,再对 oldbin 发送 QUIT;必要时回滚二进制并重新执行 USR2/WINCH/QUIT
  • 端口占用或启动失败
    • 检查端口占用:ss -tulpen | grep ‘:80|:443’;确认 SELinux/防火墙策略;查看 error.log
  • 版本不符合安全要求
    • yum 源版本过低,切换到 mainline 官方源或采用 源码编译 获取 ≥ 1.27.0

0