如果 nginx 遇到错误,是否运行 shellscript?

如果 nginx 遇到错误,是否运行 shellscript?

如果遇到 5xx 错误,我可以配置我的 nginx 来运行一些 shell 命令/脚本吗?

我的 spawn-fcgi 经常崩溃,我有一个 cronjob 定期重新启动它,但我认为最好的解决方案是,如果 nginx 无法到达 spawn-fcgi,则通过命令重新启动它。

答案1

你可以跑监控在配置中这样做:


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 文件,它回显“OK”

当然,我认为你已经有一个 spawn-fcgi 初始化脚本和一个 PID 文件。

答案2

不,你不能这样做,除非修补 nginx 源,而且这样做是错误的,因为 nginx 可能由于多种原因遇到 5xx 错误,而不仅仅是 spawn-fcgi 崩溃。

例如,在进程管理器下运行 spawn-fcgi守护进程工具或者主管,您可以配置它在 spawn-fcgi 崩溃时重新启动它。

答案3

您可以编写一个脚本,连接到端口 80(telnet/curl)上的服务器并搜索指定的语法,如果不可用则重新启动守护进程。我猜您可以将其从服务器头中取出?

相关内容