using variables in nginx.conf with 'set'

Arthur Blake arthur.blake at gmail.com
Fri Oct 22 16:27:52 MSD 2010


It seems like the set command was designed for use in a narrow set of
circumstances.  But I think it would be a lot more useful if the variables
it defines could be used globally with any directive.

I am trying to use the 'set' command in order to define my own variables
that define things that may vary by server in a main nginx.conf file so that
a generic reusable include file can later use those variables.  It seems
that the variables only work in certain places with certain directives.

Is there a reason I can't use variables set this way more widely?  I would
like to be able to use variables like this anywhere in the config files.

In the example below, I define two variables with the 'set' command,
$rootfolder and $backend.

The $rootfolder variable doesn't work with the include directive and the
$backend doesn't work with the proxy_pass directive.
But the $rootfolder does work with the $alias directive.

#main nginx.conf
server
{
  listen 80;
  server_name www.justatest.xxx
  set $rootfolder /Development
  set $backend http://127.0.0.1:8080
  # This doesn't work!
  # include $rootfolder/mytest/vhost.conf;
  # have to use this instead
  include /Development/mytest/vhost.conf;
}


#vhost.conf include

location /
{
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Rewrite-URL $request_uri;
  # this doesn't work!
  # proxy_pass $backend;
  # have to use this instead
  proxy_pass http://127.0.0.1:8080;
}

location /resources/
{
  # this DOES work
  alias $websites/www/resources/;
}


--Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20101022/7987846d/attachment.html>


More information about the nginx mailing list