Мы используем proxy_intercept_errors ( http://wiki.nginx.org/HttpProxyModule#proxy_intercept_errors ) с нашими бэкэндами.
Мы перехватываем несколько статусных кодов, в том числе несколько 5хх.
Наш обработчик 5xx (каждый 500 имеет свой собственный) имеет access_log, поэтому мы можем видеть все ошибки 5xx, возвращаемые пользователю в красивом и чистом формате журнала.
Проблема в том, что в настоящее время мы не можем сказать, была ли 5xx возвращена пользователю nginx или перехвачена нашим сервером.
Есть ли способ провести различие между ними?
Спасибо.
500 - довольно серьезная ошибка для самого nginx, поэтому он всегда записывает об этом в журнал ошибок. И этого не произойдет, если ошибка вернулась из бэкэнда.