理解nginx配置中的多个if的匹配规则
时间:2014-06-19 02:24 来源:linux.it.net.cn 作者:IT网
配置文件:
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;
}
http://1.1.1.1/bb?&_kw=1777&_pg=-1&_pc=1
对于上面的配置,访问上面的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 location(不是多个if)的匹配规则,请参考:http://wiki.nginx.org/NginxHttpCoreModule#location
(责任编辑:IT)
配置文件: 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; }
http://1.1.1.1/bb?&_kw=1777&_pg=-1&_pc=1
复制代码 代码如下:location ~ /bb {
|