Então, depois de tentar encontrar a resposta para tentar novamente solicitações no nginx, não encontrei uma maneira limpa de tentar novamente solicitações, mas descobri uma maneira hacky para isso. Portanto, dentro da seção upstream no conf nginx, você deve colocar várias cópias do mesmo servidor upstream, pois tentar novamente no nginx é no nível do servidor upstream. Se um servidor upstream falhar, o nginx tentará o pedido em outro servidor upstream. Se você tem apenas 1 servidor upstream como eu tenho, não vai repetir o pedido. Então, para superar isso, coloquei várias cópias do mesmo servidor upstream, de modo que, no momento em que o nginx passasse pela lista de servidores e enviasse solicitações, o servidor upstream (haproxy, neste caso) teria recarregado e o pedido iria para. Também é essencial passar pelos vários tempos de espera que o nginx fornece no módulo http e no módulo do servidor. "fail_timeout" - diz que se um servidor upstream não estiver disponível descomissioná-lo por x segundos, mas se todos eles não estiverem disponíveis, ele não será descomissionado (estou mencionando isso, pois no momento em que o nginx passa pela lista inteira, o haproxy pode PS: esta é uma solução hacky e eu tive que ter uns 100 - 150 entradas de upstream no meu arquivo nginx para reduzir erros em significativo número. Melhores soluções são bem vindas :)