网络安全实战nginx漏洞版本升级 1.28.0到1.30.0
下载版本地址https://nginx.org/en/download.html系统环境ubuntu 24.04一、下载并编译新版nginx1.下载nginx1.30.0wget https://nginx.org/download/nginx-1.30.0.tar.gz2.解压tar -zxvf nginx-1.30.0.tar.gz3.移动到/usr/local目录个人习惯也可以略过此步骤mv nginx-1.30.0 /usr/local/4.先确定一下当前版本xinxcd /usr/local/nginx/sbin/./nginx -v显示nginx version: nginx/1.28.05.编译新版本cd /usr/local/nginx-1.30.0./configure继续执行make命令执行成功以后回在当前目录产生一个objs目录注意事项编译产生物理路径nginx/objs/nginx禁止执行 make install 防止覆盖现有配置出现 ./configure:error 需要检查缺失的依赖库二、替换可执行文件平滑升级1.替换可执行文件备份旧版本方便报错回滚cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak备份配置文件可选cp -r /usr/local/nginx/conf /usr/local/nginx/conf.bak将新编译的objs/nginx 复制到旧版本安装目录中cp objs/nginx /usr/local/nginx/sbin/注意此时操作会提示 cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy 。表面正在被运行的nginx进程占用。 需要先通过nginx平滑升级流程 处理旧进程确保替换二进制文件时不会冲突。2.进行平滑升级处理获取旧版本nginx 主进程PIDcat /usr/local/nginx/logs/nginx.pid发送USR2 信号启动新版本的master进程kill -USR2 449621此时nginx 会启动新的master进程并加载新版本配置文件旧版本master进程仍然在运行但新的master进程已经启动。替换二进制文件mv objs/nginx /usr/local/nginx/sbin/关闭旧版本进程发送winch信号逐步关闭旧版本worker进程kill -WINCH 449621检查进程状态ps -ef |grep nginx此时旧的会话被新的nginx进程替代在检查新nginx 不影响业务之后就可以完全停止旧进程了完全关闭旧版本master进程kill -QUIT 449621检查新版本是否运行验证版本信息/usr/local/nginx/sbin/nginx -v回滚方案如升级失败恢复备份文件cp /usr/local/nginx/sbin/nginx.bak /usr/local/nginx/sbin/nginx重启旧版本进程kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)启动旧版本nginx/usr/local/nginx/sbin/nginx