set directive not working when mirror is used

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 ;-)


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


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


Here is my location directive :

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


 location = /_oauth {
   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
nginx mailing list
nginx at<mailto:nginx at>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list