什么时候重启而不重新加载 Nginx?
Posted
技术标签:
【中文标题】什么时候重启而不重新加载 Nginx?【英文标题】:When to restart and not reload Nginx? 【发布时间】:2012-11-11 14:31:19 【问题描述】:什么时候需要重启nginx,reload就不行了? 如果使用像passenger 这样的扩展名会有什么不同吗?
如果服务消耗太多内存,是否应该重新启动服务。重启 Nginx 的任何其他原因,尤其是在扩展或 Nginx 核心配置中的配置更改之后?
在进行配置更改后,可以通过 binary 本身或 Ubuntu 上的 init.d 脚本“/etc/init.d/nginx -h”重新启动或重新加载 nginx。应该首选哪种方法?
【问题讨论】:
我不明白你的最后一段。这是一个问题吗? 【参考方案1】:重新加载 nginx 比重新启动更安全,因为在终止旧进程之前,会解析新的配置文件,如果有任何问题,整个进程都会中止。
另一方面,当你重新启动 nginx 时,你可能会遇到由于语法错误而导致 nginx 停止并且不会重新启动的情况。
重新加载会终止旧进程,因此无论如何都应该清除任何内存泄漏。
【讨论】:
像modrails.com/documentation/Users%20guide%20Nginx.html 这样的 ngixn 扩展会有什么不同吗? 嗯,当使用乘客时,通常更明智的做法是重新启动应用程序服务器而不是 Web 服务器(在这种情况下,通过触摸tmp/restart.txt
文件),但除此之外它应该完全一样。
如果我在nginx -t
之前检查语法怎么办?那有什么区别呢?
来自 nginx 指南:一旦主进程接收到重新加载配置的信号,它会检查新配置文件的语法有效性并尝试应用其中提供的配置。如果这是成功的,主进程启动新的工作进程并向旧的工作进程发送消息,请求它们关闭。否则,主进程将回滚更改并继续使用旧配置。【参考方案2】:
我遇到过需要重新启动 nginx 才能让 listen
指令启动新 IP 地址的情况。
【讨论】:
我刚才也有同样的经历……我快疯了,直到我想通了!!【参考方案3】:Ztyx 是对的——在某些情况下需要在更改监听指令时重新启动。
使用1.6.x,更改监听IP地址时可以重新加载,但从“*:80”监听到IP地址“x.x.x.x:80”时需要重新加载。
我只用 IPv4 确认了这一点,IPv6 的行为可能类似。
【讨论】:
以上是关于什么时候重启而不重新加载 Nginx?的主要内容,如果未能解决你的问题,请参考以下文章