Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3013234
  • 博文数量: 535
  • 博客积分: 15788
  • 博客等级: 上将
  • 技术积分: 6507
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 09:11
文章分类

全部博文(535)

文章存档

2016年(1)

2015年(1)

2014年(10)

2013年(26)

2012年(43)

2011年(86)

2010年(76)

2009年(136)

2008年(97)

2007年(59)

分类: 系统运维

2010-09-16 13:22:53

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模块:


阅读(5006) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~