![当 monit 检查 nginx 上的文件时出现 301 响应](https://linux22.com/image/577113/%E5%BD%93%20monit%20%E6%A3%80%E6%9F%A5%20nginx%20%E4%B8%8A%E7%9A%84%E6%96%87%E4%BB%B6%E6%97%B6%E5%87%BA%E7%8E%B0%20301%20%E5%93%8D%E5%BA%94.png)
我有一个 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