当 monit 检查 nginx 上的文件时出现 301 响应

当 monit 检查 nginx 上的文件时出现 301 响应

我有一个 monit 脚本,用于检查 nginx 是否已启动并正在运行。它所做的一件事是检查文件“ping.txt”。我可以在浏览器中查看它,但是什么会导致脚本返回 301 重定向响应?

monit 脚本片段:

if failed port 80 protocol http and request '/ping.txt'

以下是 nginx 日志中的内容:

127.0.0.1 - - [29/Feb/2012:20:59:58 +0000] "GET /ping.txt HTTP/1.1" 301 185 "-" "monit/5.2.5"

答案1

您实际上能够浏览本地主机上的 ping.txt 吗?也许您需要尝试 LAN IP。

您可以使用 lynx 或 links2 等 shell 浏览器进行测试。从您的评论中,我看到您可能已将其配置为虚拟主机。您可能需要使用主机名或完整 URL 访问网页,即http://www.example.org/ping.txt

在您的示例中,您尝试访问 127.0.0.1,因此您的网络服务器返回 301。

要更改主机,请执行以下操作:

check host host.example.com with address 192.0.43.10
if failed port 80 protocol http and request '/ping.txt'

或者省略地址。

答案2

我知道这已经是老问题了,但我也遇到过同样的问题,并通过谷歌搜索“monit 301”找到了这个问题,经过一番折腾,我发现问题是“monit 在检查我的服务器时没有设置主机名标头,因此它没有被定向到正确的虚拟主机。您可以使用 hostheader 指令将主机名添加到检查中,例如:

check host www.mysite.co.uk with address wwwmysite.co.uk
  if failed
     port 443 protocol https
     and request / hostheader www.mysite.co.uk
     and status = 200
  then alert

相关内容