Ну, у меня есть немного другой вопрос, чем этот : я не хочу отображать две переменные одновременно, я хочу отобразить одну переменную, используя две другие в качестве параметров.
Действительно, я прочитал в документации о директиве map, что:
До версии 0.9.0 в первом параметре могла быть указана только одна переменная.
Итак, поскольку у меня nginx 1.8, я ожидаю, что смогу использовать более одной переменной в первом параметре.
Это заставило меня подумать, что я могу написать что-то вроде двух последних директив map в этом примере:
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" "" "";
}
Но это не работает ( nginx -t
возвращает
неверное количество аргументов в директиве map
)
Итак, как можно указать несколько переменных в первом параметре? Или что на самом деле означает документация, если я ее неправильно понял?
источник
Ответы:
Вы неправильно поняли документы nginx. Это означает, что до версии 0.9 первый аргумент
map
должен быть единственной переменной и ничего больше. Начиная с версии 0.9.0 первым аргументом может быть любая строка с любым количеством переменных для интерполяции.Вот как может выглядеть ваш первый блок:
источник