nginx升级

本文详细介绍了如何从Nginx 1.16.1版本升级到1.22.0版本的过程,包括备份配置文件、下载安装包、预编译配置、编译安装等步骤,并特别关注了fastdfs模块的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:漏洞扫描nginx漏洞,查看版本为1.16.1,打算升级到1.22.0

两台nginx服务器上安装了fastdfs,nginx为fastdfs服务,所以要注意预编译参数



 

1、备份nginx.conf

cp /usr/local/nginx/conf/nginx.conf /root/

2、下载nginx1.22安装包

3、移动

mv /usr/local/src/nginx-1.22.0.tar.gz /usr/local/mv /usr/local/src/nginx-1.22.0.tar.gz /usr/local/

4、解压

cd /usr/local/

tar -xvf nginx-1.22.0.tar.gz

5、

nginx -V

6、预编译

./configure --with-http_ssl_module \

 --with-http_v2_module --with-http_realip_module --with-http_stub_status_module \

  --with-http_secure_link_module --with-stream --with-stream_ssl_module \

  --with-stream_realip_module --add-module=/opt/fastdfs_pkg/fastdfs-nginx-module/src --with-openssl=/usr/local/src/openssl-3.0.5

7、make编译  ————注意:此处不用 make install!!!

make

8、将新版的nginx程序拷贝到旧版目录下

cp -f /usr/local/nginx-1.22.0/objs/nginx /usr/local/nginx/sbin/nginx

ps aux | grep nginx     #查看进程

找到nginx父进程的pid号,发送USR2信号

依次执行命令

kill -USR2 1848

kill -WINCH 1848

kill -QUIT 1848

9、查看版本

[root@vdl-e-business-chengminmiao-5 ~]# /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.22.0

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

built with OpenSSL 3.0.5 5 Jul 2022

TLS SNI support enabled

configure arguments: --with-http_ssl_module --with-http_v2_module

--with-http_realip_module --with-http_stub_status_module

--with-http_secure_link_module --with-stream

--with-stream_ssl_module --with-stream_realip_module

--add-module=/opt/fastdfs_pkg/fastdfs-nginx-module/src -

-with-openssl=/usr/local/src/openssl-3.0.5          #旧版本的没有这行,但是不加会报错,看情况

### Nginx 升级指南与版本更新配置步骤 Nginx 的平滑升级是一种在不中断服务的情况下完成版本更新的技术。以下是详细的升级流程和关键点: #### 一、准备工作 在开始升级之前,确保服务器处于稳定状态,并备份当前的 Nginx 配置文件以及相关日志文件。此外,还需要确认当前运行的 Nginx 版本及其编译参数[^1]。 ```bash nginx -v nginx -V ``` 通过 `nginx -V` 命令可以查看当前 Nginx 的编译参数,这些参数在编译新版本时需要保持一致或根据需求调整[^3]。 #### 二、下载并编译新版本 Nginx 从官方站点下载目标版本的 Nginx 源码包,并解压到指定目录。使用与旧版本相同的编译参数进行编译[^1]。 ```bash wget http://nginx.org/download/nginx-1.xx.xx.tar.gz tar -zxvf nginx-1.xx.xx.tar.gz cd nginx-1.xx.xx ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module make ``` #### 三、替换二进制文件 编译完成后,将生成的新二进制文件复制到当前运行的 Nginx 安装路径中,覆盖旧的二进制文件[^1]。 ```bash mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/ ``` #### 四、验证配置文件 在执行升级操作前,建议先验证配置文件是否正确,以避免升级后因配置错误导致服务异常[^1]。 ```bash nginx -t ``` 如果配置文件无误,则继续下一步。 #### 五、发送信号完成平滑升级 通过向主进程发送信号实现平滑升级,具体步骤如下: 1. **发送 USR2 信号**:启动新的 Nginx 主进程,同时保留旧的主进程。 ```bash kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid) ``` 2. **发送 WINCH 信号**:通知旧的工作进程逐步退出,但不会立即终止请求处理。 ```bash kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid.oldbin) ``` 3. **发送 QUIT 信号**:完全停止旧的工作进程及主进程。 ```bash kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin) ``` #### 六、验证升级结果 检查当前运行的 Nginx 版本,确保已成功升级至目标版本[^1]。 ```bash nginx -v ps aux | grep nginx ``` #### 七、回滚方案 如果升级后发现问题,可以通过以下步骤快速回滚到旧版本: 1. 将备份的旧二进制文件恢复。 2. 重新加载 Nginx 配置。 ```bash cp /usr/local/nginx/sbin/nginx.bak /usr/local/nginx/sbin/nginx nginx -s reload ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值