zez*_*llo 13 configuration nginx
好吧,我有一个与这个略有不同的问题:我不想同时映射两个变量,我想使用另外两个作为参数来映射一个变量。
在 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" "" "";
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用(nginx -t返回一个
“map”指令中的参数数量无效
)
那么,如何在第一个参数中指定多个变量呢?或者,如果我误解了文档,它的实际含义是什么?
Ale*_*Ten 27
您误解了 nginx 的文档。这意味着在 0.9 版本之前, the 的第一个参数map必须是单变量,没有别的。从 0.9.0 版本开始,第一个参数可以是带有任意数量要插入的变量的任何字符串。
这是您的第一个块的样子:
map "$bot:$request" $np {
default "";
"~^yes:" "";
"~*^:.*newproject" "yes";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15799 次 |
| 最近记录: |