500 é um erro muito sério para o próprio nginx, então ele sempre registra isso no log de erros. E isso não acontecerá se o erro tiver sido retornado do back-end.
Usamos proxy_intercept_errors ( link ) com nossos back-ends.
Interceptamos vários códigos de status, incluindo alguns 5xx.
Nosso manipulador 5xx (cada 500 tem seu próprio) tem um access_log para que possamos ver todos os erros 5xx retornados ao usuário em um formato limpo e limpo.
O problema com isso é que, como está agora, não podemos informar o tempo em que um 5xx foi retornado ao usuário por nginx ou interceptado de nosso back-end.
Existe alguma maneira de diferenciar entre os dois?
Obrigado.