Балансировка нагрузки при недоступности backend
kseleznyov
nginx-forum на forum.nginx.org
Пт Ноя 9 14:11:45 UTC 2018
Ситуация такая: слушаем порт 80 и перекидываем запрос с него на порты 8080 и
8081. За каждым из этих портов стоит FCGI-бекэнд. Примерный файл
конфигурации:
# настройка upstream - делаем балансировку на два разных порта
upstream http_stream {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
# основная точка входа, нагрузка на которую балансируется между портами 8080
и 8081
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass http://http_stream;
}
}
# первый бекэнд - пробрасываем на FCGI по Unix Socket
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
location / {
fastcgi_pass unix:/home/skostik/sockets/1.sock;
}
}
# второй бекэнд - пробрасываем на FCGI по Unix Socket
server {
listen 8081 default_server;
listen [::]:8081 default_server;
server_name _;
location / {
fastcgi_pass unix:/home/skostik/sockets/2.sock;
}
}
Проблема: если бекэнд не отвечает по сокету
unix:/home/skostik/sockets/1.sock (т.е. nginx не может установить
соединение), то nginx не делает балансировку (не перекидывает запрос на порт
8081), а возвращает ошибку. Можно ли настроить систему так, чтобы: если один
бекэнд недоступен, то нужно слать исходный HTTP-запрос на другой порт.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,281886,281886#msg-281886
Подробная информация о списке рассылки nginx-ru