Nginx对代理HTTP资源的限制访问

一、限制连接数量

为了限制连接的数量,首先,使用limit_conn_zone指令来定义密钥并设置共享内存区域的参数(工作进程将使用该区域来共享键值的计数器)。作为第一个参数,指定作为关键字计算的表达式。在第二个参数区域中,指定区域的名称及其大小。

limit_conn_zone $binary_remote_addr zone=addr:10m;

其次,使用limit_conn指令在一个位置、一个虚拟服务器或整个HTTP上下文中应用该限制。将共享内存区域的名称指定为第一个参数,并将每个密钥的允许连接的数量作为第二个参数。

        location /download/ {
        limit_conn addr 1;
        }

这里写图片描述

[root@server1 download]# pwd
/usr/local/nginx/html/download
[root@server1 download]# ls
iso7.gif

测试:当访问该内容并发数为1时

[root@foundation7 ~]# ab -c 1 -n 10 http://172.25.7.1/download/iso7.gif
[root@server1 logs]# cat  access.log 

全部访问成功
这里写图片描述
测试:当访问该内容并发数为10时

[root@foundation7 ~]# ab -c 10  -n 10 http://172.25.7.1/download/iso7.gif
[root@server1 logs]# cat  access.log 

只有一次访问成功,其他都是503报错
这里写图片描述


二、限制请求速率

为了限制请求率,首先,使limit_req_zone指令设置密钥和共享内存区域来保持计数器。

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

一旦定义了共享内存区域,在虚拟服务器或位置(或者如果需要的话,在全局上)使用limit_req指令来限制请求率:

location /download/ {
    limit_req zone=one burst=5;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值