location ~ /bb {
if ($args ~ "&_kw=[\w]+"){
access_log logs/kw;
access_log logs/all;
}
if ($args ~ "(&_pg=[\w]+|&_pc=[\w]+)"){
access_log logs/pg;
access_log logs/all;
}
if ($args ~ "&_kw=[\w]+.*(&_pg=[\w]+|&_pc=[\w]+)"){
access_log logs/kw;
access_log logs/pg;
access_log logs/all;
}
access_log logs/all;
}
|
对于上面的配置,访问上面的url时,即匹配第一个if(因为\w为[a-zA-Z0-9_],不包含“-”,又匹配最后一个if,后面的if生效。(匹配多个if的args,后面的if生效)
验证:
location ~ /bb {
if ($args ~ "&_kw=[\w]+"){
access_log logs/kw;
}
if ($args ~ "&_kw=[\w]+"){
access_log logs/kw111;
}
}
|
我没有在nginx的文档中找到明确的有关于多个if生效的规则说明,如果谁知到在什么地方,请告诉我,谢谢。
另:关于nginx location(不是多个if)的匹配规则:
多重if,以试试nginx 的lua模块:
阅读(5044) | 评论(0) | 转发(0) |