先限流给正常请求留缓冲,确认恶意特征后再封禁,限流是第一道减速带,封禁是最后的禁入令。
限流和封禁有什么区别?一个是减速带,一个是禁入令
很多平台把限流和封禁混为一谈,实际上两者作用层级完全不同。
- 限流是“允许你来,但别太快”,它只限制速率,不否定身份。
- 封禁是“这个来源别来了”,它直接拒绝一个IP、账号或设备的所有请求。
- 限流恢复快,时间窗口过了自动放开。
- 封禁恢复慢,需要人工解封或者信任评分回升。
行业共识认为,成熟的防护体系不会一上来就封禁,先限流可以保留日志、观察行为,也给共享出口下的正常用户留一条路。
什么场景先限流后封禁
高并发下限流和封禁哪个优先?接口优先限流
高并发场景下最怕误伤,大量请求来自同一个出口很常见,比如公司NAT、学校机房、移动基站,直接封禁一个出口IP,可能把几百个正常用户一起挡在门外。
正确做法是把处理拆成几步:
- 对接口做速率限制,超过阈值的请求延迟处理或直接丢弃。
- 把触发限流的IP、UA、设备指纹写入日志。
- 观察一段时间,如果某个IP持续打满阈值,再进入封禁流程。
- 封禁时优先封账号或设备指纹,IP封禁只作为临时手段。
这样既扛住突发流量,又不会因为一个IP共享出口而大面积误伤。
网站封禁IP还是限流好?看攻击类型再决定
简单结论:CC攻击先限流,撞库和暴力破解可以更快封禁。
- CC攻击:请求量大但单次请求不复杂,限流能挡掉大部分压力,封禁IP作为后续动作。
- 撞库攻击:请求量不一定大,但带有明显失败特征,比如同一IP连续登录失败,这种可以直接封禁IP或账号,因为恶意特征已经确认。
- 爬虫抓取:先限速降低抓取频率,再根据UA和行为特征封禁。

实际场景里,多数情况下不是二选一,而是先限流采集特征,再决定要不要封禁。
分层触发:把限流和封禁串成一条处理链
API接口限流阈值设置多少合适?先压测再定档
API接口限流阈值没有统一标准,不同业务、不同服务器配置差别很大,但有一套通用的定档方法:
- 先用压测工具打接口,找到服务器稳定承载的最大QPS。
- 把限流阈值设为略低于稳定承载上限,给突发流量留一点余量。
- 观察线上错误率和响应时间,如果正常用户频繁触发429,说明阈值太紧。
- 按接口重要性分档,登录接口、支付接口阈值偏低,查询接口阈值偏高。
多数情况下,限流阈值不是一次设好就永远不变,需要根据监控数据持续调整。
一张表看懂限流和封禁的配合边界
| 对比维度 | 限流 | 封禁 |
|---|---|---|
| 动作方式 | 延迟或丢弃超额请求 | 拒绝该来源所有请求 |
| 针对对象 | 流量速率 | IP、账号、设备指纹 |
| 恢复条件 | 时间窗口自动恢复 | 人工解封或评分回升 |
| 误伤范围 | 只影响超额部分 | 影响整个来源 |
| 适用阶段 | 早期、不确定流量 | 确认恶意后 |
| 典型工具 | Nginx limit_req、Redis令牌桶 | Fail2ban、iptables、黑名单系统 |
从这个表可以看出,限流是细粒度控制,封禁是粗粒度终止,搭配使用时,限流在前,封禁在后。
实操配置:从限流到封禁的完整路径

用Nginx做第一层限流
以Nginx为例,给API接口加限流:
http {
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=20r/s;
server {
location /api/ {
limit_req zone=api_limit burst=50 nodelay;
proxy_pass http://backend;
}
}
}
这段配置的含义:
- 每个IP每秒最多20个请求。
- 突发容量50个,超过后直接返回503或429。
- nodelay表示突发请求立即处理,不排队。
这只是第一层,触发限流的IP会记录在错误日志里,供后续封禁使用。
用Fail2ban把高频IP自动送进封禁名单
Fail2ban可以监控Nginx日志,把频繁触发限流的IP自动加入防火墙封禁。
一条典型配置路径:
- 定义过滤器,匹配Nginx日志中的429或limit_req关键字。
- 设置触发阈值,比如10分钟内同一IP出现多次限流记录。
- 设置封禁时长,比如1小时或24小时。
- 执行封禁命令:
fail2ban-client set nginx-limit banip 203.0.113.10 - 解封命令:
fail2ban-client set nginx-limit unbanip 203.0.113.10
这样限流和封禁就串起来了:先限流,再根据日志自动封禁。
游戏服务器里限流和封禁怎么搭配
游戏服务器面对的流量更复杂,UDP洪水攻击会直接打满带宽,TCP连接耗尽也很常见。
搭配策略:
- 对登录服和房间服分开限流,登录服阈值低,防止暴力破解。
- 识别到伪造包或异常协议后,直接封禁源IP和游戏账号。
- 地域封禁要谨慎,很多正常玩家使用加速器,出口IP会变化,单纯按地域封禁可能误伤较大比例的真实用户。
- 游戏服务器封禁策略通常和限流组合使用:先限流保护端口,再封禁确认作弊或攻击的账号。

业内专家指出,封禁动作应该结合设备指纹和行为评分,不能只依赖IP,否则攻击者换个IP就能绕过,正常玩家却可能因为共享出口被误伤。
容易误伤的两个地方
限流和封禁搭配不好,最先受伤的往往是正常用户。
- 共享出口:公司、学校、网吧、移动网络都是NAT出口,一个IP后面可能有几十上百个用户,封禁整个IP段会让这些用户全部无法访问。
- 阈值过低:把限流阈值设得太低,正常用户稍微频繁操作就会被429拦截,比如搜索接口,用户连续翻页可能就触发了限制。
- 只封不禁:攻击者不断换IP,封禁列表越来越大,但正常流量没有被保护。
解决办法:优先封账号和设备指纹,IP封禁只作为临时手段,同时给封禁设置自动过期时间,避免黑名单无限膨胀。
限流不是软弱,封禁也不是越狠越好,先用限流吸收不确定性,再用封禁清除确定性恶意,这套组合才扛得住真实业务里的复杂流量。
限流和封禁策略搭配常见问题
限流和封禁有什么区别?
限流只限制请求速率,允许超额部分进入等待队列或直接丢弃,时间窗口过了自动恢复,封禁直接拒绝一个来源的所有请求,恢复时间更长,通常需要人工或自动解封。
网站遇到攻击时封禁IP还是限流好?
如果攻击类型是CC或爬虫,先限流观察;如果是撞库或暴力破解,可以更快封禁,封禁IP前要确认该IP不是共享出口,否则容易误伤正常用户。
什么情况下限流会误伤正常用户?
当限流阈值设置过低,或者用户处在NAT出口、移动网络等共享IP环境时,正常请求可能被当成超额流量拦截,多数共享出口下,单个IP会聚集大量正常请求,封禁和限流都需要加入白名单或放宽突发容量。