Isso deve praticamente "funcionar" com o nginx usando upstreams e, opcionalmente, recarregamentos nginx. Não tenho certeza do que você quer dizer com "específico para uma conexão" neste contexto, mas fazendo algumas suposições sobre sua configuração ...
Supondo que o aplicativo de ponto de upload será chamado de "uploadpoint" e que, inicialmente, ele vai para point1
e que point2
é o que você deseja mover para:
upstream uploadpoint {
server point1.example.com;
server point2.example.com backup;
}
(Para obter parâmetros adicionais relacionados a verificações de integridade, consulte a documentação original ) oficial. Então, dentro do seu bloco de servidores, você apontaria para esse local:
server {
listen 80;
server_name public.example.com;
location /upload {
proxy_pass http://uploadpoint/doupload/;
}
}
Neste caso, você tem um upstream que prefere ir ao 'point1', mas assim que ele estiver inativo, tudo começará automaticamente em point2
. Em algum momento, você pode alternar entre o primário e backup
(ou até mesmo remover o antigo, dependendo se você quiser ter um secundário) e emitir um service nginx reload
ou kill -HUP <nginx_pid>
. No seu caso, é provável que você faça isso para obter uma alternância simples em vez de reduzir point
1 e ter um failover .
upstream uploadpoint {
server point2.example.com;
server point1.example.com backup;
}
Quando o nginx é recarregado, ele permite que as conexões sejam drenadas (o que, acredito, é o que você está pedindo) para qualquer coisa existente antes de enviar novas coisas.
Você também desejará rever as várias opções em torno de proxy_pass
, especialmente [proxy_next_upstream][2]
.