Nginx reload 和 restart 的区别
区别
-
reload:重新加载,reload会重新加载配置文件,Nginx服务不会中断。而且reload时会测试conf语法等,如果出错会rollback用上一次正确配置文件保持正常运行。
-
restart:重启(先stop后start),会重启Nginx服务。这个重启会造成服务一瞬间的中断,如果配置文件出错会导致服务启动失败,那就是更长时间的服务中断了。
所以,如果是线上的服务,修改的配置文件一定要备份。为了保证线上服务高可用,最好使用reload。
reload 实现过程
- 向Master进程 发送 HUP 信号(reload命令)
- Master进程 校验配置语法是否正确
- Master进程 打开新的监听端口(如果配置文件增加了新端口)
- Master进程 用新配置启动新的Worker子进程
- Master进程 向老Worker子进程发送QUIT 信号
- 老Woker进程 关闭监听句柄,处理完当前请求后结束进程
注意
reload 只是重新加载配置文件,不会清理nginx 的一些缓存,在有些需要清理缓存的场景需要restart ,例如upstream 后端配置的集群服务地址是域名而不是IP,当后端IP 变了,就需要清除该域名的解析缓存,此时需要重启而不是reload。
(end)
- 作者:xmlwch
- 原文链接:https://m730.xmlwch.cn/2023/04/17/others/nginx-reload-restart.html
- 版权声明:本作品采用 知识共享 署名-相同方式共享 4.0 国际(CC BY-SA 4.0)许可协议 进行许可,转载无需与我联系,但请注明出处。