nginx 1.12.2升级到1.14.1

nginx news
2018-11-06  nginx-1.14.1 stable and nginx-1.15.6 mainline versions have been released, with fixes for vulnerabilities in HTTP/2 (CVE-2018-16843, CVE-2018-16844) and the MP4 module (CVE-2018-16845).

nginx官网消息,修复了两个漏洞,HTTP/2 (CVE-2018-16843, CVE-2018-16844)该漏洞允许潜在的攻击者触发拒绝服务(DoS)状态并可能访问敏感的信息。在nginx HTTP/2实现中发现了两个安全问题,这可能导致过多的内存消耗(CVE-2018-16843)和CPU使用率(CVE-2018-16844)。此外,“如果在配置文件中使用”listen“指令的”http2“选项,则问题会影响使用ngx_http_v2_module编译的nginx(默认情况下不编译)。”为了利用上述两个问题,攻击者可以发送特制的HTTP/2请求,这将导致过多的CPU使用和内存使用,最终触发DoS状态。

第三个安全问题(CVE-2018-16845)影响MP4模块,允许攻击者在恶意制作的MP4文件的帮助下,在工作进程中导致无限循环,崩溃或内存泄露状态。最后一个安全问题仅影响运行使用ngx_http_mp4_module构建的nginx版本并在配置文件中启用mp4选项的服务器。此外,如果攻击者还设法触发恶意MP4文件的处理,则该问题仅会影响服务器。

为缓解这两个问题,服务器管理员务必将其nginx安装更新为1.14.1 稳定版或1.15.6主线版本。

所以今天来做下nginx的升级

1、获取nginx的安装目录
# ps -ef | grep nginx | grep master | awk -F" " '{print $11}'
usr/local/nginx/sbin/nginx

2、查看升级之前的nginx版本,同时获取旧nginx版本的编译参数
#/usr/local/nginx/sbin/nginx -V #注意是大写的V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre

3、到官网下载1.14.1版本的nginx (下载地址:http://nginx.org/en/download.html)
# wget http://nginx.org/download/nginx-1.14.1.tar.gz

4、解压下载好的文件,并进入文件夹进行编译(只编译不安装
# tar xf nginx-1.14.1.tar.gz
# cd nginx-1.14.1
# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
#make

5、备份旧版本的nginx的执行程序
# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

6、替换旧的Nginx的执行程序
# cp objs/nginx /usr/local/nginx/sbin/

7、发送USR2信号给旧版本主进程号,使nginx的旧版本停止接收请求,用nginx新版本接替,且老进程处理完所有请求,关闭所有连接后,停止
# kill -USR2 `cat /var/run/nginx/nginx.pid`

8、查看nginx pid目录,多了个nginx.pid.oldbin文件,存放了旧版本nginx的pid号
# ls /var/run/nginx
nginx.pid nginx.pid.oldbin

9、从容关闭旧进程
# kill -QUIT `cat /var/run/nginx/nginx.pid.oldbin`

10、查看升级后的版本
# /usr/local/nginx/sbin/nginx -v #可以用小写v
nginx version: nginx/1.14.1

平滑升级完毕!

附:如果是yum安装的nginx,升级就很简单了,直接yum update nginx即可安装到仓库有的最新版,不过通常库更新的比较慢。
rpm包安装的话,就直接rpm -Uvh nginx-1.14.1.rpm即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值