Geralmente isso acontece se você configurar o php para exibir erros:
php_admin_value[display_errors] = On
O nginx considera a mensagem de erro como uma página válida e altera o código de status http.
Ref: link
A configuração do meu servidor é assim: Nginx1 (proxycache) < --------- > Nginx2 < - > PHP-FPM
Quando o PHP-FPM falha porque o processo está inoperante (errorconnect para unix: /run/php/php7.0-fpm.sock falhou: Nenhum desses arquivos ou diretórios durante a conexão com o upstream) ou por causa de pm.max_children foi alcançado Nginx2 retorna um 404. Eu olhei se esse comportamento é definido em qualquer lugar na minha configuração, mas parece que é o padrão.
Se o Nginx1 receber um código de erro 502 do Nginx2, ele mostrará a versão obsoleta da página e é por isso que eu quero que ele retorne um código 502. Eu sei que eu posso configurar o Nginx para usar a versão obsoleta quando ele recebe um 404 do upstream, mas não há como diferenciar isso de um 404 normal quando um arquivo é excluído.
Geralmente isso acontece se você configurar o php para exibir erros:
php_admin_value[display_errors] = On
O nginx considera a mensagem de erro como uma página válida e altera o código de status http.
Ref: link