Variable weirdness ( was root not recognized )

Sean Allen sean at monkeysnatchbanana.com
Thu Jan 1 17:57:48 MSK 2009


I figured out why the below didnt work for me.

I left out one key point about root /some/path;

We are actually doing:

set $root $base/public;
root $root;

because conf files are shared by multiple sites. this way each site  
set $base
and it gets reused in different places... to make the below work, with  
that
i need to change

>  if ( $site_maintenance )
>  {
>    root /maintenance/path;
>    rewrite (.*) /maintenance/index.html;
>  }

to

if ( $site_maintenance )
{
   set $root /maintenance/path;
   rewrite (.*) /maintenance/index.html
}

which is TOTALLY not how I expected variables to work.
is this documented somewhere?

that if you set root with a variable, to later change root you have
to change the value of the variable and that using root will have no  
effect?

On Dec 31, 2008, at 5:56 PM, Sean Allen wrote:

> ok, well better put on root is recognized, a second isnt.
>
> have this setup ( lots of snipping here... )
>
> root /some/path;
> ....
>
> location /
> {
>  if ( -f /tmp/.maintenance )
>  {
>    set $site_maintenance 1;
>  }
>
>  if ( $site_maintenance )
>  {
>    root /maintenance/path;
>    rewrite (.*) /maintenance/index.html;
>  }
> }
>
> problem is... the rewrite works just fine but its trying to serve
>
> /some/path/maintenance/index.html
> instead of
> /maintenance/path/maintenance/index.html
>
> any idea why?
>
>






More information about the nginx mailing list