暂无图片
nginx如何平滑切换nginx?
我来答
分享
暂无图片 匿名用户
nginx如何平滑切换nginx?

nginx如何平滑切换nginx?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

1. 安装新的 nginx 版本,和原有版本并行存在。

2. 修改配置文件 nginx.conf,指定使用新的 nginx 版本。例如原来使用 /usr/local/nginx,现在使用 /usr/local/nginx-new。

3. 发送信号给原有 nginx 进程,处于等待状态,不再接受新的请求,但继续处理旧请求。

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

4. 启动新的 nginx 进程。

/usr/local/nginx-new/sbin/nginx

5. 等待一段时间,确保原有 nginx 已经处理完所有旧请求后,再发送信号让其平滑退出。

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid`

6. 如果启动新的 nginx 进程失败,可以发送信号让原有 nginx 进程恢复正常,然后进行修复。

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

这是 nginx 提供的平滑重载机制,主要通过维持两代 nginx 同时运行,并通过信号的方式让其一一过渡而不中断服务实现的。要注意的点主要有:1. 旧 nginx 和新 nginx 的配置要基本一致,特别是 listen 配置。
2. 发送信号的时间点要把握好,不能让两个 nginx 同时处于正常处理请求的状态。
3. 要监控日志,确保每一步的执行是正常的。如果出现问题要及时回滚。

暂无图片 评论
暂无图片 有用 4
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏