当使用的后端代理auth_request
返回不同于 401 或 403 的错误代码时,nginx 将返回 500 错误代码。
ngx_http_auth_request_module 模块(1.5.4+)根据子请求的结果实现客户端授权。如果子请求返回 2xx 响应码,则允许访问。如果它返回 401 或 403,则访问被拒绝并带有相应的错误代码。子请求返回的任何其他响应代码都被视为错误。
有没有办法让 nginx 从后端返回状态码而不是 500 ?
当使用的后端代理auth_request
返回不同于 401 或 403 的错误代码时,nginx 将返回 500 错误代码。
ngx_http_auth_request_module 模块(1.5.4+)根据子请求的结果实现客户端授权。如果子请求返回 2xx 响应码,则允许访问。如果它返回 401 或 403,则访问被拒绝并带有相应的错误代码。子请求返回的任何其他响应代码都被视为错误。
有没有办法让 nginx 从后端返回状态码而不是 500 ?
我找到了一个可行的解决方案。它使用的事实是
auth_request
,如果后端错误不同于 401 或 403 ,将始终返回 500 错误代码:注意返回的状态码
$backend_status
是一个字符串。