Hello!

On Wed, Feb 24, 2021 at 10:39:57AM +0100, Vincent Blondel wrote:

> Hello all,
> I have a quick question about the usage of IF and auth_request.
> I would like to know if it is possible to use a IF statement to condition
> the proxy behaviour of one /location depending on the response headers of
> the sub auth request ...
> 
> location /subrequest/ {
>     proxy_pass xxx;
> }
> location /anyrequest/ {
>     auth_request /subrequest/;
> 
>     if ($response_header ~ '' ) {
>       proxy_pass_request_body off;
>       proxy_set_header Content-Length "";
>       proxy_pass ...
>     }
>     if ($response_header !~ '' ) {
>       proxy_pass xxx;
>     }
> }
> 
> Thank You in advance for your Support ...

No, it is not going to work.  The "if" directive and other rewrite 
module directives are executed as a part of selecing a 
configuration to process a request[1], and this happens before any 
authentication checks.

Things that can work:

- Using variables in the configuration and map[2] to conditionally 
  evaluate them after auth subrequest.  This might not be the best 
  approach in your particular case, as proxy_pass_request_body 
  does not support variables.

- Returning an error from auth subrequest, so you can switch to a 
  different location using error_page[3].

[1] http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
[2] http://nginx.org/en/docs/http/ngx_http_map_module.html
[3] http://nginx.org/r/error_page

-- 
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to