那么我有一个比这个稍微不同的问题 :我不想同时映射两个variables,我想映射一个variables使用另外两个参数。
事实上,我已经阅读了关于地图指令的文档 :
在版本0.9.0之前,只能在第一个参数中指定一个variables。
所以,因为我有nginx 1.8,我希望能够在第一个参数中使用多个单个variables。
这导致我认为我可以在这个例子中写下类似于最后两个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”指令中的参数个数无效
)
那么,怎样才能在第一个参数中指定几个variables呢? 或者,如果我误解了它,那么实际上是什么意思呢?
你误解了nginx的文档。 这意味着在版本0.9之前, map第一个参数必须是单个variables,而不是其他的。 从版本0.9.0开始,第一个参数可以是任意数量的要插入的variables的string。
在这里,你的第一个块如何看起来像:
map "$bot:$request" $np { default ""; "~^yes:" ""; "~*^:.*newproject" "yes"; }