Inconsistency in ability to use variables in nginx config

Valentin V. Bartenev vbart at
Wed Nov 13 10:15:59 UTC 2013

On Wednesday 13 November 2013 10:25:44 miguel_hamster wrote:
> It seems like it's possible to use variables in some configuration
> directives but not in others. This works:
> root /usr/www/$sitename/httpdocs;
> works, while these:
> access_log /var/log/www/$sitename/access.log;

This should work too.  See documentation:

> proxy_cache $sitename;
> do not, instead generating errors when I try to restart nginx.
> Is there any documentation that explains where I can and cannot use a
> variable?

See official docs:
It's usually explicitly stated if directive supports variables

> Or is there some syntax I should be using to indicate variable
> interpolation? It would be immensely helpful if they worked in all these
> contexts, because then we wouldn't have to repeat so much across different
> site configuration files, leading to the requirement for generating them
> with clunky scripts. As it is, the variables are of very limited utility.

Yes, it is.  Variables in nginx are not supposed to replace template engines
or special configuration-generation tools.

See FAQ:

Also, some duplication in config isn't something horrible.  Nginx configuration
is not a programming language, it utilizes another paradigm and trying to be

  wbr, Valentin V. Bartenev

More information about the nginx mailing list