由于一直有第三方在扫描网站,并且扫描到了大量的NGINX漏洞,并且在Nginx官网也提供了各种补丁,各种升级版本,由于打补丁的方式太过于麻烦了,所以很多人选择了直接升级到指定的版本来修复漏洞。
但是线上环境一定要做到无感升级,不影响正常运行的业务,下面我们就来看看,在线上环境如何实现Nginx的无感升级。
如何查看Nginx版本信息?
可以通过如下的命令来查看当前的Nginx的版本
nginx -v # 用来查看当前版本号
nginx -V # 用来查看当前版本号,以及一些详细的信息
如何升级?
第一步,下载安装包
可以到官网下载稳定版本的Nginx的包,建议尽量使用官网下载对应的稳定版本。
第二步,上传加压
将下载好的安装包上传到需要更新的服务器上,并且使用tar命令进行解压缩。
tar -zxvf nginx-1.24.0.tar.gz
解压后进入到Nginx文件中。
使用nginx -V的方式来查看版本信息,如下所示
[root@localhost ~]# nginx -V
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2 22 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/nginx/pcre-8.35 --with-openssl=/usr/local/src/nginx/openssl-1.0.2
[root@localhost ~]#
这里主要关注的是下面的配置参数configure arguments,如果这个参数后面没有内容,就可以直接执行对应的./configure文件,如果后面跟了内容,那么在配置的时候一定要加上对应的参数。如上所示,在进入到nginx-1.24.0目录进行配置的时候,需要加上对应的参数,如下所示。
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/nginx/pcre-8.35 --with-openssl=/usr/local/src/nginx/openssl-1.0.2
执行这一步的时候有可能会出现编译失败或者是安装失败的情况。这是因为新版本中可能会有一些新的依赖,所以执行会报错。这个时候需要根据具体的提示安装好对应的依赖即可。
第三步,执行Make命令
配置完成之后,需要在Nginx目录中执行make命令,执行完成之后,在nginx目录下会有一个./objs/nginx文件,接下来将旧的nginx启动文件进行备份、并且将新的目录下的./objs/nginx 文件复制到旧的文件位置中。如下所示。
# 为了保险起见需要备份旧的启动文件
mv /usr/sbin/nginx /usr/sbin/nginx.bak
# 将编译好的启动文件复制到旧的里面
cp objs/nginx /usr/sbin/nginx
这个时候查看Nginx的进程。
ps -ef|grep nginx
查看新的Nginx目录中的Makefile文件。需要修改一个upgrade配置,如果这个地址对应的不是旧的地址所对应的nginx,就需要进行手动的修改。但是一般情况下是不需要进行修改的。
修改好之后,在新版本的安装目录中执行 make upgrade 命令进行升级。这时候就开始执行自动更新了。
更新完成之后,进入到nginx命令目录中,执行 nginx -V 的命令来查看对应的版本信息。就看到nginx已经变成了新的版本。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2705686032@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.zun.com/zx/yunwei/4293.html