尽管 EngineX 正在运行,但 monit 似乎无法弄清楚。
这是我的监控日志:
[PDT Apr 13 02:19:19] error : HTTP error: Server returned status 400
[PDT Apr 13 02:19:19] error : 'nginx' failed protocol test [HTTP] at INET[localhost:80] via TCP
[PDT Apr 13 02:19:19] info : 'nginx' trying to restart
[PDT Apr 13 02:19:19] info : 'nginx' stop: /etc/init.d/nginx
[PDT Apr 13 02:19:20] info : 'nginx' start: /etc/init.d/nginx
monitrc 文件包含以下配置:
if failed port 80 protocol http and request '/ping.txt' # check for response
with timeout 20 seconds
then restart
我可以通过lynx http://localhost:80/ping.txt毫无问题地访问该文件。
为什么当 nginx 运行良好时,monit 会在请求文件时遇到问题?
早于 0.6.15 的 Nginx 曾经向 GET http://www.domain.com HTTP/1.0之类的请求返回 400 。我假设,您在过去两年中更新了 Nginx?如果是,请尝试提高 Nginx 调试级别并在此处发布日志。
这个问题原来是版本差异的原因。
我最初的 monitrc 文件是为 v5+ 设计的,但它运行的机器使用了 Monit 4.1