针对近期出现的nginx版本漏洞,需要将nginx升级到最新版本1.22.0,这里演示具体操作步骤。大多数项目可能用的是tengine服务,由于tengine官方还没有发布最新版本,同样可以升级到nginx的最新版本。

nginx升级包

  1. 上传附件“nginx升级包”到web服务器

    解压压缩包

    使用ssh客户端工具或者服务器终端,登录web服务器。使用cd命令,进入上传到升级包附件的目录下。使用unzip命令解压zip包。

    unzip nginx升级包.zip

    查看编译参数

    使用cd命令,进入原nginx安装目录下,执行以下命令

    ./sbin/nginx -V

    图片1
    如图在最好一样可以看到原nginx服务的编译参数--prefix=/usr/local/nginx,如果是tengine服务可能还有其他的参数,不论原服务是nginx还是tengine,这里统一只需要复制--prefix参数即可。
  2. 编译安装新版本nginx服务
    使用cd命令进入第2步解压的update目录,比如:cd  /root/update,具体路径取决于更新包上传时的目录。然后执行以下命令就行安装。
    cd  nginx-1.22.0  &&  ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=../openssl-1.1.1q --with-pcre=../pcre-8.45 --with-zlib=../zlib-1.2.11  &&  make  && make  install
    以上命令中的--prefix=/usr/local/nginx为第3步中,复制的原nginx版本编译参数,注意根据自身环境进行替换。
    等待以上命令执行完成,可能会花费较长的时间。
  3. 验证服务
    待上一步的命令执行完成后,同样执行第三部的命令,进入原nginx安装目录,执行
    ./sbin/nginx  -V
    图片2


    如图所示,原nginx版本已经成功升级到1.22.0版本。
  4. 测试配置文件
    在原nginx安装目录执行命令
    ./sbin/nginx -t
    图片3


    如图所示,返回以上信息表示配置文件无需调整,可直接重启服务即可。如果以前是tengine服务,可能会出现配置文件报错
    图片4


    报错某个指令找不到。可以下载原nginx配置文件,默认是在原nginx安装目录下的conf/nginx.conf配置文件。查找所有的upstream配置段,调整配置。如:调整前的配置如果是
    图片5
    调整后的配置为
    图片6
    然后重新执行./sbin/nginx -t,直到没有报错信息。
  5. 重启nginx服务
    进入原nginx服务安装目录,执行
    ./sbin/nginx  -s  stop  &&  ./sbin/nginx 
    执行完毕后,再浏览器上访问网站是否可以打开页面。如果网站访问正常,代表nginx版本升级成功。