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.
On Sat, Jan 12, 2013 at 09:40:14PM -0800, Daniel L. Miller wrote:
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 …
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.
[test.conf]
variable in one file and then use it in an included file, it is
set $a “hello”;
Note there is no “=” character. See Module ngx_http_rewrite_module for
details.
Shows what happens when you quickly type up an example…thanks for
catching it.
So I repeat my question - why, given the above example (with correct
syntax), would I see warnings for “uninitialized variable” for the above
in the “test.conf”, as the variable is declared prior to the include
statement?