Aqui é exatamente como Michael Hampton referenciou - implementando upstream dinâmico usando Lua
Eu estava experimentando a configuração dinâmica do upstream para o nginx e não consigo encontrar nenhuma boa solução para implementar a configuração upstream de fontes de terceiros, como redis ou mysql.
A ideia por trás disso é ter uma configuração de arquivo único no servidor principal e solicitações de proxy para vários servidores de aplicativos com base nas condições do ambiente. Pense em implementações dinâmicas em que você tem servidores X que executam operadores Y em portas diferentes. Por exemplo, eu crio um novo aplicativo e implemento. O gerenciador de aplicativos seleciona um servidor e, em seguida, executa um trabalho (Ruby / PHP / Python) e, em seguida, reporta o ip: port para o banco de dados central com o status "up". Neste momento, quando eu vou para o nginx url dado deve proxy todas as solicitações para o ip: porta upstream especificado. A coisa toda é bem parecida com o que o heroku faz, exceto que essa prova de conceito não deve estar pronta para produção, principalmente para necessidades internas.
A solução mais fácil que encontrei foi usar o resolvedor com o servidor DNS baseado em ruby. Ele funciona, o nginx obtém o endereço IP corretamente, mas o único problema é que você não pode definir o número da porta para esse IP.
A segunda solução (que ainda não tentei) é colocar outra coisa como um servidor proxy, talvez escrito em Erlang. Nesse caso, precisamos usar algo para servir conteúdo estático.
Alguma idéia de como implementar isso de maneira mais flexível e estável?
P.S. Algumas opções de pesquisa:
Aqui é exatamente como Michael Hampton referenciou - implementando upstream dinâmico usando Lua
Parece que a resposta anterior, por Dan, está mais de acordo com o que você está pensando.
Mas eu escrevi um proxy reverso baseado em node.js que permitiria que isso fosse feito facilmente:
Tags proxy nginx redis dynamic-routing