Chinaunix首页 | 论坛 | 博客
  • 博客访问: 438399
  • 博文数量: 97
  • 博客积分: 1552
  • 博客等级: 上尉
  • 技术积分: 1091
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-17 17:05
个人简介

专注于大规模运维场景运维工具解决方案。欢迎有这方面兴趣的朋友跟我联系。

文章分类

全部博文(97)

文章存档

2014年(12)

2013年(25)

2012年(60)

我的朋友

分类: Java

2014-05-28 14:29:08

在《》和《》中会对所有的IP进行限制。在某些情况下,我们不希望对某些IP进行限制,如自己的反代服务器IP,公司IP等等。这就需要白名单,将特定的IP加入到白名单中。下面来看看白名单实现方法,需要结合geo和map指令来实现。geo和map指令使用方法参见下面文章。《》和《》。不扯蛋了,看配置。

http {
    geo $whiteiplist  {
        default 1;
        127.0.0.1 0;
        10.0.0.0/8 0;
        121.207.242.0/24 0;
    }
 
    map $whiteiplist  $limit {
        1 $binary_remote_addr;
        0 "";
    }
 
    limit_conn_zone $limit zone=limit:10m;
 
    server {
        listen       8080;
        server_name  test.ttlsa.com;
 
        location ^~ /ttlsa.com/ {
                limit_conn limit 4;
                limit_rate 200k;
                alias /data/
        }
    }
}

技术要点:
1. geo指令定义一个白名单$whiteiplist, 默认值为1, 所有都受限制。 如果客户端IP与白名单列出的IP相匹配,则$whiteiplist值为0也就是不受限制。
2. map指令是将$whiteiplist值为1的,也就是受限制的IP,映射为客户端IP。将$whiteiplist值为0的,也就是白名单IP,映射为空的字符串。
3. limit_conn_zone和limit_req_zone指令对于键为空值的将会被忽略,从而实现对于列出来的IP不做限制。

测试方法:

# ab -c 100 -n 300

如需转载请注明出处:

阅读(3264) | 评论(1) | 转发(0) |
0

上一篇:深度分析Linux下双网卡绑定七种模式

下一篇:没有了

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

itfly32015-12-17 17:29:38

http{
    .....
    geo $oklist {
        default 1;
        include limit/ok.ip;
    }
    map $oklist $limit {
        1 $binary_remote_addr;
        0 \"\";
    }
    limit_req_zone $limit zone=one:10m&