用monit重新加载nginx

用monit重新加载nginx,nginx,monit,Nginx,Monit,我希望用monit重新加载nginx,而不是重新启动。文档中说,有效的服务方法是启动、停止和重新启动,而不是重新加载 对于如何重新加载nginx而不是重新启动nginx,有人有解决办法吗 编辑-我应该指出,我仍然需要重新启动nginx的能力,但在某些情况下,我还需要只重新加载nginx 例如,如果nginx宕机,则需要重新启动,但如果正常运行时间>3天(例如),则应重新加载 我正在努力做到这一点: …但是使用nginx重新加载,而不是重新启动 谢谢。您可以传递重新加载信号,该信号将执行以下操作:

我希望用monit重新加载nginx,而不是重新启动。文档中说,有效的服务方法是启动、停止和重新启动,而不是重新加载

对于如何重新加载nginx而不是重新启动nginx,有人有解决办法吗

编辑-我应该指出,我仍然需要重新启动nginx的能力,但在某些情况下,我还需要只重新加载nginx

例如,如果nginx宕机,则需要重新启动,但如果正常运行时间>3天(例如),则应重新加载

我正在努力做到这一点:

…但是使用nginx重新加载,而不是重新启动


谢谢。

您可以传递重新加载信号,该信号将执行以下操作:

nginx -s reload
“使用文档,卢克!”

根据文档,发送
HUP
信号将导致nginx重新读取其配置文件、检查并应用新配置


有关详细信息,请参阅:

在满足条件时,我使用
exec
命令解决了此问题。例如:

check system localhost
  if memory > 95%
  for 4 cycles
  then exec "/etc/init.d/nginx reload"

我发现nginx内存问题可以通过重新加载而不是重新启动在短期内得到解决

这是一个可以实现您想要的配置:

check process nginx with pidfile /usr/local/var/run/nginx.pid
  start program = "/usr/local/bin/nginx -s start"
  stop program = "/usr/local/bin/nginx -s stop"
  if uptime > 3 days then exec "/usr/local/bin/nginx -s reload"
我已经在我的配置上试过了。我看到的唯一问题是,Monit假设您在这样检查正常运行时间时定义了一个错误条件。我在机器上看到的
nginx-s reload
命令不会将进程的正常运行时间重置为0。由于Monit认为正常运行时间>3天是一种错误情况,可以通过您在配置中给它的命令进行纠正,但该命令不会将正常运行时间重置为少于3天,因此Monit会将
正常运行时间失败
报告为进程状态,您将在日志中看到:

error    : 'nginx' uptime test failed for /usr/local/var/run/nginx.pid -- current uptime is 792808 seconds
事实上,你会看到成百上千个(我的配置每30秒运行一次Monit,所以我每30秒就会得到一个)

一个问题:我不确定长时间(比如3天)后重新加载nginx会有什么效果-这样做对nginx有帮助吗?如果您有一个链接,指向为什么nginx可以这样做的信息,这可能会帮助其他读者通过搜索访问此页面。也许你接受了你的答案,因为你看到只有在出现问题时,如内存使用率高,这样做才有意义

(我知道这是一篇老文章,但我是通过谷歌找到的,我发现被接受的答案不完整,也不完全理解OP的意图)


编辑:啊,我看你接受了自己的答案。我的错误。所以,你似乎确实看到,按照你最初的要求去做是毫无意义的,而是选择了内存检查!我将离开我的帖子,让其他同样困惑的读者明白这一点

谢谢你的回复。我编辑了我的问题,因为我没有指出我需要重新加载和重新启动。谢谢。我想我真正想要的是如何在Monit中启用它。我知道如何重新加载nginx,但不是通过Monit自动加载。我真的很想实现这一点,但需要重新加载,而不是重新启动。我将更新这个问题以反映这一点。似乎您要求的建议是错误的-重新加载nginx通常在其配置更改后完成,而monit旨在检查nginx的代理\状态。如果monit发现nginx失败-您应该重新启动它,而不是重新加载其配置。