Variables and includes

Maxim Dounin mdounin at
Mon Jan 14 02:50:20 UTC 2013


On Sat, Jan 12, 2013 at 09:40:14PM -0800, Daniel L. Miller wrote:

> Is it possible to use a variable from one configuration in a
> included config file?  Example:
> set $a = "hello";
> include test.conf;
> [test.conf]
> if ($a = "hello") {
>     set $a = "world";
> }
> # something that works with $a
> Within the scope of the commands of test.conf, will $a be "hello" or
> "world"?  Currently my usage like this gives me a, "using
> unitialized variable" warning.

The "include" directive works during configuration parsing and 
completely transparent to everything else.  That is, you may set a 
variable in one file and then use it in an included file, it is 
expected to work fine.

On the other hand, example you've provided is syntactically 
invalid and will result in the following error during 
configuration parsing:

nginx: [emerg] invalid number of arguments in "set" directive in ...

Correct way to write it would be

   set $a "hello";

Note there is no "=" character.  See for 

Note well, that after fixing the example the $a at the end of 
test.conf will be either "world" (if test.conf goes after 'set $a 
"hello";') or uninitialized if it's included somewhere else.

Maxim Dounin

More information about the nginx mailing list