接手项目nginx存在漏洞,需要升级nginx修复

image.png

发现现场nginx是docker版本,也不知道容器内是否做过其他配置修改 不敢直接删容器更新镜像启动

image.png

按照常规更新方法

下载源码--docker没有wget

安装wget--apt下载失败

更新apt源--还是莫名其妙失败

主机上wget下载完成使用docker cp拷进去--是拷进去了

解压,编译--没有make

安装make--陷入apt无法使用的死循环

解决方案

尝试直接替换二进制文件  /usr/sbin/nginx

在自己服务器内起一个新版的nginx容器 提取其中的

/usr/sbin/nginx 文件放置到现场容器的对应目录中

一开始复制的时候不要起nginx这个名字,否则容器会起不来,起一个nginx2啥的

中间报错缺少了几个库,或者库中没有相关函数

再次从自己的nginx容器中提取相关文件放置到容器(做好原库备份!!!)

image.png

最终nginx2可以执行了,此时可以尝试 cp nginx2 nginx

image.png

报错nginx正在使用,可以把nginx进程停止后覆盖,或者停止容器后搜索nginx2文件的位置

image.png

cd进入该目录 将nginx2改成nginx

image.png

容器正常运行

测试业务是否正常

image.png

升级完毕

可以再进容器验证nginx版本

image.png

总结

优点:非常安全,不涉及任何配置文件的修改,理论上一定可以成功(做好中间过程记录和文件备份)

缺点:如果原先没有做集群,业务会中断一段时间

来源:https://www.hyluz.cn/post/67875.html

标签: none

添加新评论