Por padrão, o nginx honrará o Cache-Control
recebido do back-end por seu próprio cache de proxy. link
Assim, parece que a melhor solução seria alterar o back-end para parar de emitir esses cabeçalhos em caso de erros.
Se você realmente deseja substituir os 500s no nginx, talvez use proxy_cache_valid com 500 e 0 como os parâmetros? Isso definitivamente significa adivinhar o backend, então pode ter consequências não intencionais de qualquer forma.