Bueno, tengo una pregunta un poco diferente a esta : no quiero asignar dos variables al mismo tiempo, quiero asignar una variable usando otras dos como parámetros.
De hecho, he leído en la documentación sobre la directiva de mapas que:
Antes de la versión 0.9.0, solo se podía especificar una sola variable en el primer parámetro.
Entonces, como tengo nginx 1.8, espero poder usar más de una variable en el primer parámetro.
Esto me llevó a pensar que podría escribir algo como las dos últimas directivas de mapas en este ejemplo:
map $http_user_agent $bot {
default "";
"~*Googlebot" "yes";
"~*MJ12bot" "yes";
"~*bingbot" "yes";
etc.
}
map $request $bot $np {
default "" "";
default "yes" "";
"~*newproject" "" "yes";
"~*newproject" "yes" "";
}
map $bot $np $regular {
"" "" "yes";
"" "yes" "";
"yes" "" "";
}
Pero no funciona ( nginx -t
devuelve un
número inválido de argumentos en la directiva "mapa"
)
Entonces, ¿cómo es posible especificar varias variables en el primer parámetro? O, ¿qué significa realmente la documentación, si la entendí mal?
fuente
Respuestas:
Has entendido mal los documentos de nginx. Significa que antes de la versión 0.9 el primer argumento
map
debe ser una variable única y nada más. Desde la versión 0.9.0, el primer argumento podría ser cualquier cadena con cualquier número de variables para interpolar.Así es como podría verse su primer bloque:
fuente