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