【问题标题】:Reload nginx config file重新加载 nginx 配置文件
【发布时间】:2017-08-19 14:21:28
【问题描述】:

编辑完 nginx 配置文件后如何重新加载? 我在 Mac 上将它与 Rails 一起使用......但我是 nginx 的新手,所以我真的不知道该怎么做。 我已经研究并尝试了nginx -s reload,但这只是返回一个错误,即没有这样的文件/目录。

【问题讨论】:

标签: ruby-on-rails macos nginx


【解决方案1】:

您可以通过 systemctl restart nginx/usr/local/etc/rc.d/nginx restart 之类的方式完全重启 nginx,也可以向其进程发送 signal 以使其重新加载其配置:killall -s SIGHUP nginx

【讨论】:

  • 我已经尝试了所有这三个建议,终端返回:“没有找到属于你的匹配进程”......“没有这样的文件或目录”......和“systemctl:命令未找到”。会不会是应用的问题?
  • 没有。从您使用的标签中,我看到您正在使用 OSX。我不知道如何在 OSX 上重新启动服务,但由于它或多或少与 posix 兼容,因此信号解决方案效果最好。也就是说:如果您没有 killall-command,请尝试使用 ps 查找 nginx PID 并使用 kill: "kill -s SIGHUP 1234" 发送信号
  • -s reload 的重点不是避免过渡之间的停机时间吗?使用restartkillall 会破坏该目的
  • 常见的误解是killall只能用来杀死进程。相反,它可以发送信号,其中一个是SIGUSR1,另一个是SIGHUP。这些都不会杀死进程,但它们可以被正在运行的进程处理并“做事”。如果SIGHUP 是重新加载,请参见此处:nginx.org/en/docs/control.htmlSIGUSR1 如果您使用外部 logrotate 机制也很有用。
【解决方案2】:

我是这样做的

killall -9 nginx; sleep 1; nginx

【讨论】:

  • 那么你有至少一秒钟的纯停机时间,恭喜。根据您的工作,这可能会导致很多问题。
猜你喜欢
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多