Por padrão, o nginx não está configurado para repetir conexões com outro upstream se um deles retornar um erro 502. Você basicamente precisa adicionar isso:
proxy_next_upstream error timeout http_502;
Para sua configuração. Isso evitará que os erros do 502 sejam enviados diretamente de volta ao cliente e, em vez disso, fará com que o nginx tente e busque um upstream melhor. Ele tentará todos os upstreams antes de retornar ao cliente de acordo com este post:
Aqui estão mais detalhes sobre a diretiva de configuração: