Defina uma variável padrão no nginx com set

10

No nginx eu posso usar setpara definir uma variável, mas é possível definir um padrão?

por exemplo

set $foo bar if $foo is not defined
Howard
fonte
2
O que você está tentando realizar?
Michael Hampton

Respostas:

16
map $foo $new_foo {
    default  $foo;
    ''       bar;
}

ou

if ($foo = '') {
    set $foo bar;
}
VBart
fonte
1
Usando o método if, recebi um using uninitialized "foo" variableaviso no meu log. Posso evitá-lo?
hiroshi
0

Isso também funciona:

map $foo $foo {
    default '';
}
map $foo $bar {
    default '';
    'bar' 'bar';
    'foo' $foo;   <----- nginx: [emerg] unknown "foo" variable
}

map $foo $foo {}erro resolve nginx: [emerg] unknown "foo" variable - apenas não parece certo - mas funciona.

Nota: mapdeve estar no bloco http {}( nginx/conf.d)

hrvoj3e
fonte