Définissez une variable par défaut dans nginx avec set

10

Dans nginx, je peux utiliser setpour définir une variable, mais est-il possible de définir une valeur par défaut?

par exemple

set $foo bar if $foo is not defined
Howard
la source
2
Qu'est-ce que vous essayez d'accomplir?
Michael Hampton

Réponses:

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

ou

if ($foo = '') {
    set $foo bar;
}
VBart
la source
1
En utilisant la méthode if, j'ai reçu un using uninitialized "foo" variableavertissement dans mon journal. Puis-je l'éviter?
hiroshi
0

Cela fonctionne également:

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

map $foo $foo {}résout l'erreur nginx: [emerg] unknown "foo" variable - ne semble pas juste - mais cela fonctionne.

Remarque: mapdoit être dans le bloc http {}( nginx/conf.d)

hrvoj3e
la source