nginx auth_request como retornar o código de status do backend

2

quando o proxy de back-end usado em auth_request retorna um código de erro diferente de 401 ou 403, o nginx está retornando um código de erro 500.

The ngx_http_auth_request_module module (1.5.4+) implements client authorization based on the result of a subrequest. If the subrequest returns a 2xx response code, the access is allowed. If it returns 401 or 403, the access is denied with the corresponding error code. Any other response code returned by the subrequest is considered an error.

Existe uma maneira de fazer o nginx retornar o código de status do back-end e não de 500?

    
por jobou 13.10.2016 / 12:23

1 resposta

1

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.

    
por 13.10.2016 / 14:17