升级nginx

问题

Nessus上周报nginx由于http2的漏洞,可能导致ddos的攻击,并且将安全级别设定为high。

用yum update做了个升级,但是没仔细看,这样升级后的版本还是受到影响的。

没法只好从根上进行解决,就是按照Nessus的报告说明,升级到最新版的nginx。

过程

  1. 到nginx.org下载最新的tar.gz文件

  2. 解压备用,这里假设解压到/root/nginx1.17.x/这个目录

  3. 确定当前运行的nginx的信息

    nginx -v //用于确定当前的nginx版本

    nginx -V //用于确定当前nginx使用的配置项,拷贝输出

  4. 进入/root/nginx1.17.x目录

  5. 运行./configure 加上当前nginx的配置项(就是b的输出),如果出现报错,酌情进行一些项目的修改

  6. 我这里因为以前是yum安装的,有些依赖没有及时更新,在进行./configure的时候出现多个依赖的问题,这边用这个来解决的

    yum install openssl-devel zlib zlib-devel libxslt-devel gd gd-devel geoip-devel gperftools perl-devel perl-ExtUtils-Embed -y

  7. 上面的依赖安装完毕后,再进行./configure 加配置参数的事情就顺利完成了。

  8. 再下来对当前的nginx的运行文件进行备份,这个过程不影响当前运行的nginx进程

    mv /usr/sbin/nginx /usr/sbin/nginx.bak

  9. 还是在/root/nginx1.17.x目录下,运行make命令,进行编译

  10. 编译顺利完成后会进行提示,并且在objs目录下会有nginx的文件出现

  11. 复制该文件到原位置

    cp ./objs/nginx /usr/sbin/nginx

  12. 复制完成后,nginx -t来检测下nginx.conf的配置文件是否没有错误

  13. 如果提示有错误,出现模块的版本替换问题,最好就是直接到module文件夹下,对这些个module的配置文件用#号进行注释掉

  14. 还有就是原来我的那些conf.d目录下的conf文件都是开了ssl的,但是这个新版本里面的ssl on这个指令已经被废除了,所以在conf文件里面也要将这行ssl on注释掉

  15. 再进行nginx -t的测试,没有错误了

  16. 依然在 /root/nginx1.17.x目录下运行 make upgrade进行热升级

  17. 以后使用service nginx restart 或者service nginx reload 都成

  18. 访问下页面,看看没有问题,nginx -v也显示为高版本了。

结论

nginx是非常成熟稳定的应用程序了。在linux的世界中,所有基于文本配置的程序都是很稳定,很有年头的事物,这种稳定,帮助后来者节约大量的时间来部署和修复错误。类似BIND的这种,超级易用,超级稳定,这也是我们都喜欢linux的原因。让有想法的人做更多有效果/结果的事情,而不是大量修复性的事务。

| 访问量:
Table of Contents