O cenário é assim, eu tenho um servidor proxy reverso nginx na frente de dois servidores de aplicativos que são backups um do outro, quero que o nginx encaminhe todas as solicitações do usuário para o primeiro servidor de aplicativos primeiro, e se o primeiro servidor de aplicativos estiver inativo , quero que o nginx encaminhe todas as solicitações do usuário para o segundo servidor de aplicativos a partir desse momento, até que o segundo servidor de aplicativos esteja inativo e o nginx reverta para encaminhar todas as solicitações do usuário para o primeiro servidor de aplicativos, e assim por diante. Claro, se ambos os servidores de aplicativos estiverem inativos, o nginx retornará um erro.
Analisei configurações como balanceamento de carga upstream e configurações de proxy_next_upstream, mas não parece ser exatamente o que estou procurando aqui. Alguma ideia de como configurar o nginx para o meu cenário? Obrigado.
Responder1
Você vai querer usar a upstream
configuração nginx para conseguir isso.
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;
}
}
A chave aqui é o backup
parâmetro, que diz ao nginx para utilizar esse nó apenas no caso de nós primários (ou seja, nós não marcados backup
) estarem indisponíveis.
Completodocumentação aqui.
Responder2
Depois de mais pesquisas, decidi usar o OpenResty (https://openresty.org/) para minhas necessidades, especificamente o LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-modulee com alguns scripts Lua personalizados, parece funcionar perfeitamente para o meu cenário.