在auth_request在nginx中返回后,我可以比较一个由auth_request_set设置的variables吗?

我有一个auth_request像这样的位置块

 location /somepath { auth_request /authorize; auth_request_set $header_variable $upstream_http_custom_header; proxy_path http://backendaddress; } 

我想要做的是,如果$header_variable不匹配一个特定的正则expression式,我想返回一个403代码。

if因为运行得太早而不工作。 还有什么可以让我做这个吗?

Nginx模块auth_request等待来自后端的200或401/403 HTTP代码:

ngx_http_auth_request_module模块(1.5.4+)根据子请求的结果实现客户端授权。 如果子请求返回2xx响应码,则允许访问。 如果返回401或403,则访问被拒绝,并显示相应的错误代码。 子请求返回的任何其他响应代码都被认为是错误的。

您的请求有一个标题,需要检查权限:

我想要做的是,如果$ header_variable不匹配一个特定的正则expression式,我想返回一个403代码。

在身份validation请求/响应周期期间,您的后端需要检查头并返回403代码,以防止未经身份validation的下一个请求发生。 auth_request模块是一个简单的testing断言,它返回一个代码。 这意味着后端进程负责此URL来回复http:// backendaddress / authorize需要额外检查所需的标头。