Назад | Перейти на главную страницу

Обратный прокси-сервер nginx для настройки высокой доступности?

Сценарий такой: у меня есть обратный прокси-сервер 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, похоже, он отлично работает для моего сценария.