好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于nginx配置中的多个if的匹配规则

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_

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的文档中找到明确的有 关于 多个if生效的 规则 说明,如果谁知到在什么地方,请告诉我,谢谢。


另: 关于 nginx location(不是多个if) 的 匹配 规则 :

http://wiki.nginx.org/NginxHttpCoreModule#location

查看更多关于关于nginx配置中的多个if的匹配规则的详细内容...

  阅读:42次