Eu encontrei uma solução de trabalho. Ele usa o fato de que auth_request
sempre retornará um código de erro 500 no caso de um erro de backend diferente de 401 ou 403:
error_page 500 @process_backend_error;
location / {
auth_request /auth
auth_request_set $backend_status $upstream_status
}
location /auth {
proxy_pass ...
}
location @process_backend_error {
# here you have access to $backend_status which contains the returned status code from your autorization backend
}
Tenha em atenção que o código de estado devolvido em $backend_status
é uma cadeia de caracteres.