NGINX限流的一些思考

我们经常遇到这种情况, 服务器资源有限,但是客户端来的请求在不断的上涨, 为了保证一部分的请求能够正常相应, 不得不放弃一些客户端来的请求, 这个时候我们会选择行的进行一些NGINX的限流操作, 这种操作可以很大程度上缓解服务器的压力, 使其他正常的请求能够得到正常响应.

    nginx 限流的策略有多种, 下面我们来聊聊常见的集中限流策略.

    1.  针对固定IP进行限流, 这种策略主要用于同一个IP反复请求服务器,类似于洪水攻击或者DDos攻击,对单一ID进行限制可以有效的

       对单一IP的限制的配置

   vim nginx.conf 
   在http域内添加    
   limit_zone one  $binary_remote_addr  30m;  
   limit_req_zone  $binary_remote_addr  zone=req_one:30m rate=10r/s;

limit_zone 是对于每个 IP 分配session空间, 总共空间大小为30M  one 定义了一个名称,   $bin_remote_add 即为一个IP地址

limit_req_zone 是对请求频率进行限制,  10 req/second的IP允许访问

    

     2.  针对IP限制并发请求

   limit_conn perip 8;      
   limit_req zone=perreq nodelay;
       这是设置IP并发 最多8个并发请求 同一个IP


     3. 配置白名单

     白名单的作用就是 对某些特定的IP不做请求限制,比如我们自己的IP,或者公司内网的IP等.

   geo $whiteiplist  {
        default 1;             ----  key=default,  value=1
        include conf/whiteip.conf;
   }

   map $whiteiplist  $limit {
        1 $binary_remote_addr;   --- value=1 则返回$binary_remote_addr 也就是IP 否则返回空字符串
        0 "";
   }

白名单放在 conf/whiteip.conf 文件里面.whitip.conf 的格式key value的格式, 就是特定的IP可以映射到空的字符串, 这样就不会对它进行限制操作了


配置白名单的 方法在官网有详细说明, 可以看这里.

GEO 用法    MAP用法

   

       4. 负载均衡可能也算一种吧 , 当然他是把自己的流量倒到别的机子上去而已

nginx 的负载均衡 配置的字段是upstream

upstream lvs { 
        server localhost:8088 ; 
        server 192.168.1.123:8080 down; 
        server abc.tmc weight=2; 
        server server:9000 backup; 
} 
然后在server 里面做一个代理, 执行lvs
server { 
        listen 80; 
        location / { 
                proxy_pass http://lvs; 
        } 
        server_name my_proxy; 
} 

   稍微解释一下 upstream 的配置,

1. down 表示这台服务器不参与负载均衡

2. weight 默认为1 , weight 值越大, 分配的请求也越多 

3. max_fails 允许请求的最多失败数目,    超过最大次数是, 返回proxy_next_upstream 模块定义的错误

4. fail_timeout : 标示失败多少次以后 就不响应了

5. back_up:  备用机 , 如果 其他机子忙或者挂了可以访问backup机子

  


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值