Приветствую.Используется связка apache + nginx.
В apache настроено "проксирование адреса", вот блок из конфига:
NameVirtualHost *:8080
<VirtualHost *:8080>
DocumentRoot "/usr/local/www/data"
AccelPass /webservice/ http://IP1/webservice/ [MC=10,MW=20,PH]
# AccelPass /webservice/ http://IP2/webservice/ [MC=10,MW=20,PH]
AccelPass / http://127.0.0.1:8081/ [MC=10,MW=20,PH]
<Location /cachemgr>
SetHandler "accel-cachemgr"
</Location>
Когда клиент набирает адрес http://мой_домен.ру/webservice/blablabla
Ответ /webservice/blablabla клиент получает не с
web-сервера(nginx/apache), а от web сервиса с другого сервера. Что и
настроено в апаче.
Т.е. если при обращении к серверу в адресной строке есть /webservice/,
ответ отдается с адреса http://IP1/webservice/.
Если http://IP1/webservice/ падает, я руками меняю адрес на
http://IP2/webservice/ и перезапускаю apache.
nginx пока никак не участвует в переключение. Я делаю это вручную в
апаче, что неудобно.
Вот кусок из конфига nginx:
location = /cgi-bin/main.pl {
proxy_pass http://127.0.0.1:8080;
proxy_connect_timeout 10;
proxy_intercept_errors on;
error_page 502 503 504 = @fallback;
}
location @backend {
proxy_pass http://127.0.0.1:8080;
proxy_connect_timeout 10;
proxy_intercept_errors on;
error_page 502 503 504 = @fallback;
}
location @fallback {
proxy_pass http://IP3(резерный сайт);
}
Хочется автоматического переключения, конечно.
Опыта мало, подскажите, пожалуйста, как правильней настроить подобную функцию?