using variables in nginx.conf with 'set'

Arthur Blake arthur.blake at
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
  listen 80;
  set $rootfolder /Development
  set $backend
  # 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

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

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

More information about the nginx mailing list