Inconsistency in ability to use variables in nginx config

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;
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? 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.

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,244605,244605#msg-244605

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: http://nginx.org/r/access_log

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: http://nginx.org/en/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: http://nginx.org/en/docs/faq/variables_in_config.html

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

wbr, Valentin V. Bartenev

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs