Вам понадобится стороннее дополнение для проверки вашего внутреннего сервера, проверьте это: http://wiki.nginx.org/HttpHealthcheckModule
Когда бэкэнд не работает, nginx отвечает на ошибку 502, вы можете установить для нее пользовательскую страницу.
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
Новый ответ:)
Я бы использовал haproxy (http://haproxy.1wt.eu/) для этого.
haproxy как ваш интерфейс, прослушивающий порт 80, и nginx + php-fpm в качестве бэкэнда
установка HAProxy: (проверьте ваши настройки и отредактируйте скрипты)
make TARGET=linux26 CPU=x86_64
cp haproxy /usr/sbin/haproxy
wget http://layer1.rack911.com/haproxy/haproxy-standard.cfg -O /etc/haproxy.cfg
wget http://layer1.rack911.com/haproxy/haproxy.init -O /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
haproxy.cfg (я не включал глобальные / стандартные сессии)
frontend webserver-80
bind <ip>:80
option forwardfor
option http-server-close
default_backend backend-nginx
backend backend-nginx
#balance roundrobin
balance source
option httpchk GET /fpm_ping
server srv1 <ip>:<port> weight 1 check
errorfile 503 /etc/errors/503_noserver.txt
Проверьте утилиту hatop (http://code.google.com/p/hatop/) или включите сеанс статистики в haproxy.cfg, чтобы можно было проверить состояние haproxy ...
listen stats :<port>
balance
mode http
stats enable
stats auth admin:admin
stats uri /
# option httplog
Настройте php-fpm для ответа на запросы ping (или измените его на другую проверку)
On /etc/nginx/nginx.conf
location /fpm_ping {
access_log off;
allow <ipaddr/cidr>;
allow 127.0.0.1;
deny all;
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
На /etc/php-fpm.d/www.conf include / uncomment
ping.path = /fpm_ping
ping.response = pong