У меня есть сценарий мониторинга, который проверяет, что 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"
Действительно ли вы можете просматривать ping.txt на локальном хосте? Возможно, вам нужно попробовать LAN IP.
Вы можете использовать для тестирования оболочку браузера, такую как lynx или links2. Из вашего комментария я вижу, что вы, возможно, настроили его как виртуальный хост. Вам может потребоваться доступ к веб-странице, используя имя хоста или полный 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'
Или оставьте адрес.
Я знаю, что это старый, но у меня была та же проблема, и я подошел к этому вопросу через поиск в Google "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