Nginx版本升级流程

旨在说明版本升级流程步骤,测试环境为nginx1.11.1升级至1.22.0稳定版本,目的是解决Nginx<=1.21.5下的0day LDAP RCE 漏洞情报。

备份

安装路径目录不大的话可以直接备份整个目录,或者剔除日志文件不备份。

1
[root@localhost nginxHome]# tar -zcvf nginx1.11.1.tar-gz nginx1.11.1/

查看原有的 nginx 编译参数

到nginx安装目录下,通过nginx -V命令检查原有的 nginx 编译参数,即configure arguments的配置内容

1
2
3
4
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.11.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/home/oneapm/nginxHome/nginx1.11.1

对新版本的源码包进行编译

解压新版本的源码包,通过上述检查原有的编译参数(–prefix=/home/oneapm/nginxHome/nginx1.11.1)对新版本源码包进行编译

1
2
[root@localhost nginx-1.22.0]# ./configure --prefix=/home/oneapm/nginxHome/nginx1.11.1
[root@localhost nginx-1.22.0]# make

特别说明:

make完之后就不要再make install,没有必要,如果make install,但–prefix又没改路径,那就gg了,覆盖了原来的安装环境,所以备份也很重要

停止nginx进程

不停止正在运行的nginx进程在下一步做二进制文件覆盖的时候会报错***/sbin/nginx’: Text file busy

1
./nginx -s stop

Tips:

提前检查好自己当前使用的那个配置文件,别停了启动的时候就不晓得配置文件是哪个了

复制新的nginx源码包中二进制文件,覆盖原来的文件

1
[root@localhost nginx-1.22.0]# cp -p /opt/nginx-1.22.0/objs/nginx /home/oneapm/nginxHome/nginx1.11.1/sbin/

启动nginx服务

-c选项指定配置文件启动nginx服务

1
./nginx -c /home/oneapm/nginxHome/nginx1.11.1/conf/nginx.conf

验证nginx升级是否成功

检查版本并测试配置是否正常

1
2
3
4
5
6
7
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/home/oneapm/nginxHome/nginx1.22.0
[root@localhost sbin]# ./nginx -t
nginx: the configuration file /home/oneapm/nginxHome/nginx1.11.1/conf/nginx.conf syntax is ok
nginx: configuration file /home/oneapm/nginxHome/nginx1.11.1/conf/nginx.conf test is successful