Nginx 实现平滑重启(Graceful Restart)可以通过以下步骤完成,确保在不中断服务的情况下重新加载配置或升级程序:
nginx -s reload
sudo nginx -s reload
# 或指定配置文件路径
sudo nginx -s reload -c /etc/nginx/nginx.conf
reload
信号后:
测试配置文件语法(避免重启失败):
sudo nginx -t
输出 syntax is ok
表示配置正确。
执行平滑重启:
sudo nginx -s reload
验证新配置生效:
sudo nginx -T # 查看当前运行的配置
ps aux | grep nginx # 检查新旧Worker进程交替
命令 | 作用 |
---|---|
nginx -s stop |
强制停止(不优雅) |
nginx -s quit |
优雅停止(处理完当前请求) |
nginx -s reopen |
重新打开日志文件 |
sudo
)。worker_shutdown_timeout
控制超时时间。kill -USR2
信号实现热升级(需结合 nginx-upgrade
脚本)。如果 nginx -s
不可用,可直接向主进程发送信号:
# 获取Nginx主进程ID
ps -ef | grep nginx | grep master
# 发送HUP信号(等效于reload)
sudo kill -HUP <MASTER_PID>
通过以上方法,Nginx 可以实现真正的平滑重启,确保服务高可用性。遇到问题可结合 error.log
排查。