Devo impostare una variabile su un valore predefinito se non è già impostata. La seguente configurazione fa il lavoro:
if ($foo ~ "^$") {
set $foo default-value;
}
Ma genera avvisi di runtime:
utilizzando la variabile "foo" non inizializzata
Esiste un modo per verificare se una variabile è impostata senza generare l'avviso e senza disattivare l'avviso a livello globale con:
uninitialized_variable_warn off;
uninitialized_variable_warn
ho appena trovato mentre cercavo qualcosa di simile, ma sembra che non debba essere impostato a livello globale, puoi semplicemente impostarlo dove devi usare variabili potenzialmente non inizializzate. Sto usando questo per passare i dettagli SSL a PHP, che sarà vuoto se si accede alla pagina senza SSL.
nginx: [emerg] "uninitialized_variable_warn" directive is duplicate in
uninitialized_variable_warn
come parte di un file php.conf
importato solo da posizioni che supportano PHP, quindi lo userò sicuramente solo in quegli ambiti, lasciando l'avvertimento ovunque. Non ho uninitialized_variable_warn
impostato alcun altro ambito (lasciandolo predefinito true
).
set_if_empty
da github.com/openresty/set-misc-nginx-module