Определяю переменную как error_status:
set $error_status $upstream_status;
и вывожу ее через format_log:
"error_status: $error_status"
все честно, одно значение:
192.168.1.200 - - [20/Jan/2010:11:02:34 +0000] "GET / HTTP/1.1" 502 169 "-" "Mozilla/5.0 (X11; U; FreeBSD i386; ru; rv:1.9.1.7) Gecko/20100108 Firefox/3.5.7" "-" "gzip:-" "error_status: 502"
В бэкенде проверка сейчас стоит и на 500 и на 502 ошибку:
if ($http_X-Previous-Error = 500) { return 500; }
if ($http_X-Previous-Error = 502) { return 500; }