Для проверки корректности файлов конфигурации Nginx используется команда nginx -t
. Если Nginx настроен правильно, в терминал будет выведено две строки:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Однако вывод данной команды всегда идёт в поток ошибок (STDERR), не зависимо от того, успешно завершилась проверка или нет. Для возможности использования поиска с помощью grep
необходимо перенаправить вывод в стандартный поток (STDOUT). Таким образом, можно проверить наличие обеих строк следующими скриптами:
nginx_syntax.sh:
#!/bin/sh if nginx -t 2>&1 | grep 'syntax is ok' > /dev/null then echo 0 else echo 1 fi
nginx_conftest.sh:
#!/bin/sh if nginx -t 2>&1 | grep 'test is successful' > /dev/null then echo 0 else echo 1 fi
Скрипты можно повесить на мониторинг в Zabbix (обязательно с правами sudo) и выводить триггер, если в результате проверки скрипт выдал значение «1».
Если же вам не принципиально знать, какая именно проверка завершилась неуспешно, а важно лишь понимать, что есть проблемы с настройкой Nginx, можно ограничиться одним более простым скриптом, возвращающим стандартный exit code (exit status):
#!/bin/sh nginx -t > /dev/null 2>&1 echo $?
Аналогично предыдущим скриптам: 0 — ошибок нет, 1 — есть ошибки.