当auth_request使用的后端代理返回与401或403不同的错误代码时,nginx返回500错误代码。
ngx_http_auth_request_module模块(1.5.4+)根据子请求的结果实现客户端授权。 如果子请求返回2xx响应码,则允许访问。 如果返回401或403,则访问被拒绝,并显示相应的错误代码。 子请求返回的任何其他响应代码都被认为是错误的。
有没有办法让nginx从后端返回状态码而不是500?
我find了一个工作解决scheme 它使用auth_request将始终返回一个500错误代码的事实,以防止与401或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 }
请注意$backend_status返回的状态码是一个string。