5.3. nginx版本升级

因为本人碰见过自己线上业务使用检测软件对web URL进行检测的时候,提示存在安全隐患,并且详情为“空指针间接引用漏洞出现个数超出,resolver存在释放后重利用漏洞。远程攻击者通过CNAME响应处理相关的构造的DNS响应,可造成worker进程崩溃,拒绝服务”具体截图如下: image0 解答:其实解决办法很简单,就是本人之前搭建版本为nginx1.8.1,那么把nginx版本升级一下即可以避免。本文主要讲解怎么样进行nginx在线升级。

首先下载nginx最新软件包,这里我下载了nginx1.12.2版本 wget http://nginx.org/en/download.html/nginx-1.12.2

查看当前nginx版本号 cd /usr/local/nginx/ (进入自己nginx的安装目录) sbin/nginx -V (查看版本号) nginx version: nginx/1.9.4 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: –user=nginx –group=nginx –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module

解压新下载的软件包,并且进入到解压目录下

tar xf nginx-1.12.2.tar.gz
cd nginx-1.12.2

接下来编译

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module(以上面显示参数为准)
make  (注意,不需要make install,不然一些配置文件都会更新)

更改老版本的nginx可执行文件

mv /usr/local/nginx/sbin/nginx     /usr/local/nginx/sbin/nginx.old   ###把老版本的nginx更名
cp  nginx   /usr/local/nginx/sbin/nginx   ###拷贝新的nginx文件过去

进入nginx安装目录,测试查看nginx版本号

cd /usr/local/nginx
sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

5.3.1. nginx重启分两种,一种平滑重启,一种直接重启

方法一平滑重启:

让nginx把nginx.pid改成nginx.pid.oldbin 跟着启动新的nginx

kill -USR2 `cat /usr/local/nginx/nginx.pid`
kill -QUIT `cat /usr/local/nginx/nginx.pid.oldbin`
(/usr/local/nginx/sbin/nginx -s reload 就可以)

方法二直接重启:

/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

重启过后查看最新版本

nginx -V

至此,nginx升级完成。