当前位置 博文首页 > 阿俊之家●●●https://ximenjianxue.blog.csdn.net:Docker ngi

    阿俊之家●●●https://ximenjianxue.blog.csdn.net:Docker ngi

    作者:[db:作者] 时间:2021-09-08 13:29

    一、背景

    安全部门漏扫发现,某业务主机当前版本的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