Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1742947
  • 博文数量: 391
  • 博客积分: 8464
  • 博客等级: 中将
  • 技术积分: 4589
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 15:12
个人简介

狮子的雄心,骆驼的耐力,孩子的执著!

文章分类

全部博文(391)

文章存档

2023年(4)

2018年(9)

2017年(13)

2016年(18)

2014年(7)

2013年(29)

2012年(61)

2011年(49)

2010年(84)

2009年(95)

2008年(22)

分类: 系统运维

2016-11-22 10:45:15

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


  1. http {
  2.     geo $whiteiplist {
  3.         default 1;
  4.         127.0.0.1 0;
  5.         10.0.0.0/8 0;
  6.         121.207.242.0/24 0;
  7.     }

  8.     map $whiteiplist $limit {
  9.         1 $binary_remote_addr;
  10.         0 "";
  11.     }

  12.     limit_conn_zone $limit zone=limit:10m;

  13.     server {
  14.         listen 8080;
  15.         server_name test.ttlsa.com;

  16.         location ^~ /ttlsa.com/ {
  17.                 limit_conn limit 4;
  18.                 limit_rate 200k;
  19.                 alias /data/www.ttlsa.com/data/download/;
  20.         }
  21.     }
  22. }

技术要点:
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不做限制。

测试方法:

如需转载请注明出处:https://my.oschina.net/xiehongfei/blog/515166

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