当前位置 博文首页 > 阿俊之家●●●https://ximenjianxue.blog.csdn.net:Docker ngi
安全部门漏扫发现,某业务主机当前版本的nginx存在nginx 安全漏洞(CVE-2021-23017)风险,需要升级到最新版本的nginx,而本环境业务泡在Docker vm上,因此需要对原生的nginx版本升级和docker中的nginx版本都进行升级;
下面让我们来一起看下nginx升级到1.20.1稳定版的过程。
2.1、升级前检查
1)备份旧版nginx文件
编译后的二进制文件:mv /usr/sbin/nginx nginx_old //新nginx编译完成后,将新nginx二进制文件复制过来,cp ./nginx-1.20.1/sbin/nginx /usr/sbin/
2)查看Nginx编译使用了什么模块,新版本nginx编译时需要:
nginx-1.13.2/sbin/nginx -V //输出类似如下
3)备份容器内nginx的配置文件:
mkdir -p /docker-vm/back/nginx
docker cp nginx.rtmp:/etc/nginx/nginx.conf /docker-vm/back/nginx/nginx.conf
2.2、宿主原生Nginx版本升级
1)资源下载:
wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
2)编译:./configure --prefix=/usr/local/app/nginx --with-http_v2_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_realip_module
然后:make //编译完成,会生成一个新目录:objs,进入该目录,会看到编译生成的nginx,注意:只编译不安装
3)复制编译后的二进制文件nginx到原sbin目录下:
4)重启nginx
5)验证:./nginx -V
2.3、Docker中的nginx升级版本
对于Docker虚拟机,只需停止当前的Nginx-vm,然后拉取最新的nginx镜像或者指定版本的镜像,重新运行一个即可。
1)查看现在的nginx镜像的运行命令(挂载的目录及端口)
docker inspect nginx.rtmp
docker ps -a --no-trunc
2)拉取最新镜像:
docker pull nginx 或 指定版本: docker pull nginx:1.16.1
现场需拉取:docker pull nginx:1.20.1
验证:
3)停止当前镜像(防止端口会被占用)
docker stop nginx.rtmp
docker rm nginx.rtmp
4)重新运行
docker run -d \
--name nginx_new \
-p 443:443 \
-p 80:80 \
--restart=always \
--privileged=true \
-e TZ="Asia/Shanghai" \
-v /server/nginx/html:/server/nginx/html \
-v /server/nginx/conf.d/nginx.conf:/etc/nginx/nginx.conf \
-v /server/nginx/logs:/var/log/nginx \
<container_id>
cs