Сценарий такой: у меня есть обратный прокси-сервер nginx перед двумя серверами приложений, которые являются резервными копиями друг друга, я хочу, чтобы nginx сначала перенаправлял все запросы пользователей на первый сервер приложений, и если первый сервер приложений не работает , Я хочу, чтобы nginx перенаправлял все пользовательские запросы на второй сервер приложений с этого времени, пока второй сервер приложений не выйдет из строя, и nginx должен вернуться назад, чтобы пересылать все запросы пользователей на первый сервер приложений, и так далее и тому подобное. Конечно, если оба сервера приложений не работают, nginx вернет ошибку.
Я просмотрел такие настройки, как балансировка нагрузки восходящего потока и настройки proxy_next_upstream, но, похоже, это не совсем то, что я здесь ищу. Есть идеи, как настроить nginx для моего сценария? Спасибо.
Вы захотите использовать nginx upstream
конфигурация для достижения этого ..
upstream mybackend {
# first app server
server 192.168.0.1;
# second app server
server 192.168.0.2 backup;
}
server {
...
location / {
proxy_pass http://mybackend;
}
}
Ключевым моментом здесь является backup
параметр, который сообщает nginx использовать этот узел только в том случае, если первичные узлы (т.е. узлы, не помеченные backup
) недоступны.
Полный документация здесь.
После дополнительных поисков я решил использовать OpenResty (https://openresty.org/) для моих нужд, в частности LuaUpstreamNginxModule https://github.com/openresty/lua-upstream-nginx-module и с некоторыми пользовательскими сценариями Lua, похоже, он отлично работает для моего сценария.