Назад | Перейти на главную страницу

Запустить сценарий оболочки, если nginx обнаружил ошибку?

Могу ли я настроить свой nginx для запуска какой-либо команды / сценария оболочки при обнаружении ошибки 5xx?

Мой spawn-fcgi часто дает сбой, я периодически перезапускаю его cronjob, но я думаю, что лучшим решением будет, если nginx не сможет достичь spawn-fcgi, а затем перезапустить его с помощью команды.

Ты мог бежать контролировать сделать это в конфиге:


check process spawn-fcgi with pidfile /var/run/spawn-fcgi.pid
        start program = "/etc/init.d/spawn-fcgi start"
        stop program = "/etc/init.d/spawn-fcgi stop"
        if failed host localhost port 80 protocol HTTP request /test.php then restart
        if 5 restarts within 5 cycles then timeout
        depends on nginx

check process nginx with pidfile /var/run/nginx.pid
        start program = "/etc/init.d/nginx start"
        stop program = "/etc/init.d/nginx stop"
        if failed host localhost port 80 protocol HTTP request /token.html then restart
        if 5 restarts within 5 cycles then timeout

test.php - это просто файл php, который выводит эхо "ОК"

Конечно, я предполагаю, что у вас уже есть сценарий инициализации spawn-fcgi и файл PID.

Нет, вы не можете без исправления исходного кода nginx, и это было бы неправильно, потому что nginx может столкнуться с ошибкой 5xx по многим причинам, а не только из-за сбоя spawn-fcgi.

Просто запустите spawn-fcgi под управлением процесса, например DAEMON Tools или руководитель, который вы можете настроить для перезапуска spawn-fcgi при сбое.

Вы можете написать сценарий, который подключается к вашему серверу через порт 80 (telnet / curl) и ищет указанный синтаксис, а если он недоступен, перезапускает демон. Вы могли бы вынуть его из заголовка сервера?