set directive not working when mirror is used

PALMA Mickael MPALMA at largus.fr
Fri Sep 20 15:02:00 UTC 2019


Thank you Dimitry,

I will remove the default value.
It will be empty by default in stead of ‘-‘ not a big loss ;-)

Regards.

On 20 Sep 2019, at 14:54, Maxim Dounin <mdounin at mdounin.ru<mailto:mdounin at mdounin.ru>> wrote:

Hello!

On Fri, Sep 20, 2019 at 07:59:15AM +0000, PALMA Mickael wrote:

Hi,

Here is my location directive :

server {
 # Start with an undefined API name, each API will update this value
 set $api_name -;

 [...]

 location = /_oauth {
   internal;
   set $api_name 'Oauth API';

   # Policy configuration here (authentication, rate limiting, logging, more...)
   mirror /_mirrored_api;
   proxy_pass http://$upstream$request_uri;
 }
}

In my log I only get “-“ as api_name but if I comment the mirror directive I get 'Oauth API’.

Any idea how to avoid that.
I always want the name to be ''Oauth API’'.

The problem is that variables space is shared among all
subrequests, including mirror one.  As such, "set $api_name -;" in
the mirror subrequest overrides the one previously set for the
request.  The only solution is to avoid changing variables you
don't want to be changed.  In this particular configuration -
consider removing "set ..." from the server level.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx mailing list
nginx at nginx.org<mailto:nginx at nginx.org>
http://mailman.nginx.org/mailman/listinfo/nginx

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20190920/b27ee459/attachment-0001.htm>


More information about the nginx mailing list