nginx限流方法一:limit_req&limit_req_zone限制处理速率

本文详细介绍了如何使用 Nginx 的 limit_req 和 limit_req_zone 指令进行限流。限流原则设定为每个IP每秒最多访问一次。首先,通过 limit_req_zone 定义请求限制空间,以IP地址为限制目标,并设置内存大小和速率限制。然后,在具体请求处理中,利用 zone、burst 和 nodelay 参数实现灵活的限流策略。实际应用中,可以根据需求对不同类型的请求进行差异化限流,例如对 HTML 页面进行限流,而放过 CSS、JS 和图片等静态资源。文章提供了多个参考资料以便深入学习。
摘要由CSDN通过智能技术生成

限流原则:每个IP每秒只能访问n次

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    ·······
    location / {
         limit_req zone=mylimit burst=5 nodelay;
         limit_req _log_level error;
         limit_req_status 503;
         ·······
    }
}

step1:定义请求限制空间

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

1. $binary_remote_addr,表明是以remote_addr为限制目标,加上binary是为了压缩内存占用空间

remote_add记录的是ip地址信息,如:“192.168.1.222”会占用7到15个字节,

而如果用binary_remote_addr只会占用4个字节。

就相当于不同的表示方式,一个全程一个缩写的表示。

2. zone=name:size,分配一个以name为名的并且大小为size的内存空间,用来存储访问的频次信息

1M能存储16000 IP地址的访问信息,10M可以存储16W IP地址访问信息。如果区域存储耗尽,则删除最近最少使用的状态。如果即使在此之后无法创建新状态,请求也会以错误终止。--If storage is exhausted when NGINX needs to add a new e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值