Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2224622
  • 博文数量: 533
  • 博客积分: 8689
  • 博客等级: 中将
  • 技术积分: 7046
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:00
文章分类

全部博文(533)

文章存档

2024年(2)

2023年(4)

2022年(16)

2014年(90)

2013年(76)

2012年(125)

2011年(184)

2010年(37)

分类: LINUX

2011-07-20 09:32:04







nginx内使用正则表达式(花括号)需要注意的问题
2010年05月24日 星期一 13:42
朋友为对付一些乱七八糟网站的盗链,于是就在nginx配置文件内写了一个正则来禁止那些域名,他写的是这个样子:

if ($http_referer ~* .*([0-9]{2,3}[a-z]{3}\.com|ffkkk\.net|444nnn\.net)) {
return   403;
}

但是用nginx -t来测试nginx配置文件语法的时候报错,提示在[0-9]这里有错。我看了看,正则写的没有问题呀,怀疑是[]的问题,我自己以前没有在ngnix内用过[],就简化了下:

if ($http_referer ~* .*[0-9]\.com) {
return   403;
}

用上面这个配置语法测试通过了。说明[]是可以直接用的,这样试过之后我恍然大悟,确定是{}的问题,因为nginx内{}是用来表示配置段的,直接用肯定有问题。但是在nginx的配置文件内,难道正则就不能用{}了吗?

肯定是可以的,要不然也太弱智了,经过google,终于找到答案:原来如果正则内有用{}的话,只要在正则的两边加上单引号或双引号就行了。

所以写成这样子就通过了:

if ($http_referer ~* "^.*[0-9]{2,3}[a-z]{3}\.com") {
return   403;
}





阅读(1086) | 评论(0) | 转发(0) |
0

上一篇:NGINX 重写一例

下一篇:日志服务器的搭建

给主人留下些什么吧!~~