首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【linux技术】怎么对同一IP频繁访问进行限流配置

【linux技术】怎么对同一IP频繁访问进行限流配置

作者头像
子晓聊技术
发布2026-04-23 14:49:53
发布2026-04-23 14:49:53
650
举报
文章被收录于专栏:子晓AI量化子晓AI量化

之前写了一篇关于 文章 如何系统架构防爬虫的常用技术方案 ,

提到Nginx限流配置,最近自己用上了这个,临时记录在这。 需要的同学自取。


一、为什么IP限流是服务防护的基石?

当单IP请求速率异常飙升时,可能面临:

  • 恶意爬虫高频抓取数据
  • 暴力破解攻击尝试登录
  • DDoS洪水攻击

消耗服务器资源据统计,60%的服务瘫痪源于未管控的突发流量而非真实用户压力


二、Nginx限流核心原理:算法与模块

1. 漏桶算法(Leaky Bucket)
  • 请求如“水”流入桶中,桶底以恒定速率“漏水”(服务处理能力)
  • 溢出请求直接被丢弃
代码语言:javascript
复制
nginx配置


http {
# 定义限流区:10MB内存,每秒100请求/IP
    limit_req_zone $binary_remote_addr zone=req_ip:10m rate=100r/s
}



2. 令牌桶机制(Burst参数)
  • burst定义桶容量,允许瞬时突破基础速率
  • nodelay立即处理突发请求,避免延迟

三、生产级配置实战(附完整代码)

1. 基础IP限流规则
代码语言:javascript
复制
nginx配置


http {
# 二进制IP存储节省50%内存[4](@ref)
    limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=200r/s;

    server {
        location /api/ {
# 启用限流+突发50请求
            limit_req zone=ip_limit burst=50 nodelay;
            proxy_pass http://backend;

# 超限返回429状态码(默认503)
            limit_req_status 429;
        }
    }
}



关键参数解析

  • burst=50:允许单IP瞬时250请求(200+50)
  • 内存计算:10MB空间在64位系统存储约81,920个IP状态(128字节/IP)
2. 精细化场景策略

场景

配置方案

作用

高频API防护

burst=20 nodelay

防刷同时允许合理突发

登录安全

rate=5r/s burst=0

彻底禁止高频尝试

静态资源

rate=500r/s burst=100

避免阻塞页面加载

下载限速

配合limit_rate 100k

防止带宽耗尽

3. 动态封禁恶意IP(OpenResty方案)
代码语言:javascript
复制
nginx配置


http {
    lua_shared_dict block_ip m;  # 共享内存存储黑名单

    server {
        location / {
            access_by_lua_block {
                local blacklist = ngx.shared.block_ip
if blacklist:get(ngx.var.remote_addr) then
return ngx.exit()
                end
            }
        }

# 封禁接口(需鉴权!)
        location /admin/block {
            content_by_lua_block {
                ngx.shared.block_ip:set(ngx.var.arg_ip, true, )  
            }
        }
    }
}




实时拦截高频攻击源,封禁时长可动态调整


nginx -t && systemctl reload nginx  # 验证配置并热重载




所有限流策略的核心不是拦截攻击,而是确保真实用户的请求永不失败。需要设置合理的阈值,拦截掉异常请求,也允许真实用户正常访问。

小tip: 同一个区域网访问网站,可能是同一个外网ip,系统设计的时候需要考虑到这点, 不管是放入白名单还是设置合理阈值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、为什么IP限流是服务防护的基石?
  • 二、Nginx限流核心原理:算法与模块
    • 1. 漏桶算法(Leaky Bucket)
    • 2. 令牌桶机制(Burst参数)
  • 三、生产级配置实战(附完整代码)
    • 1. 基础IP限流规则
    • 2. 精细化场景策略
    • 3. 动态封禁恶意IP(OpenResty方案)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档