三种nginx限流方式

通过查看nginx官方文档,小弟查看到了三种nginx限流方式。

1、limit_conn_zone

2、limit_req_zone

3、ngx_http_upstream_module

前两种只能对客户端(即单一ip限流),并且文档也很全,但是经过测试发现,还是无法达到官方文档所说的结果(可能小弟的测试方法有问题)。

这里先简单的介绍一下前两种:

1、limit_conn_zone

1.1nginx配置

 

http{
    limit_conn_zone $binary_remote_addr zone=one:10m;
    server
    {
         ......
        limit_conn   one  10;
        ......
    }
}

其中“limit_conn one 10”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效。

 

该配置表明:客户端的并发连接数只能是10个。

2.2结果

 

ab工具20并发去请求nginx,可以看到

Complete requests: 20

Failed requests: 9

(由于nginx配置中一个ip并发连接数为10,而结果中成功数为+1的原因未知;nginx的日志中也可以看到有9个请求返回503)

2、limit_req_zone

2.1 nginx配置

 

http{
    limit_req_zone  $binary_remote_addr  zone=req_one:10m rate=1r/s;
    server
    {
         ......
        limit_req   zone=req_one  burst=120;
        ......
    }
}

其中“limit_req zone=req_one burst=120”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效。

 

 

rate=1r/s的意思是每个地址每秒只能请求一次,也就是说令牌桶burst=120一共有120块令牌,并且每秒钟只新增1块令牌,

120块令牌发完后,多出来的请求就会返回503.。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值