
线上服务最可怕的故障,往往不是正常业务流量扛不住,而是突发异常流量。
爬虫批量刷接口、恶意脚本高频请求、活动瞬间流量峰值、用户重复疯狂提交,都能瞬间把后端服务打满线程、打高CPU,导致正常用户请求也跟着超时、排队、报错,最终引发服务雪崩。
我之前线上遇到过一次典型事故:凌晨爬虫批量遍历接口,无间隔高频请求,后端Spring服务线程瞬间打满,所有接口全部卡死,前端页面大面积打不开,排查日志全是重复无效请求。
事后复盘发现:后端有限流,但是网关层没做拦截。大量无效流量穿透到业务层,挤占正常资源,导致服务直接瘫痪。
很多开发者误以为限流是后端事情,其实真正稳定的线上架构,一定是Nginx网关层优先拦截、后端业务层精准防护的双层防护体系。
今天结合真实线上故障,不讲废话,带大家吃透Nginx限流、熔断、防刷、IP封禁全套生产方案,彻底杜绝流量击穿导致的服务雪崩。
一、为什么后端限流不够用?
很多项目只在接口内部做Redis计数器限流、令牌桶限流,看似稳妥,实则存在巨大短板。
第一,所有恶意流量、无效请求依然会经过Nginx、进入后端服务、占用线程池和CPU资源,哪怕最终拦截返回报错,资源损耗已经产生。
第二,高并发瞬间流量,后端限流组件有短暂处理延迟,峰值击穿风险极高。
第三,爬虫、恶意IP高频访问,无法快速拉黑,持续消耗服务器带宽和连接数。
简单来说:后端限流是补救,Nginx限流是兜底。真正的防护,必须在流量进入服务之前就拦截掉脏流量。
二、Nginx核心限流原理(两种生产模式)
Nginx官方提供两种成熟限流模块,适配不同生产场景,也是目前企业通用的标准方案。
1、limit_req_zone:限制请求频率(秒级请求数)
核心作用:控制单IP每秒最大请求次数,专治高频刷接口、短时间密集请求,适合所有查询、提交类接口。
2、limit_conn_zone:限制并发连接数
核心作用:限制单IP同时在线连接数,防止单IP大量长连接、批量请求占满服务器连接池。
两者搭配使用,既能限制频率,又能限制并发,形成完整流量防护屏障。
三、生产级限流完整配置(可直接上线)

下面给一套中小企业通用、稳定、无BUG的Nginx限流配置,适配99%的Web、接口、前后端分离项目。
全局限流配置:
# 定义请求限流区域:单IP每秒最多5次请求,缓存区域10M
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;
# 定义并发连接限流:单IP最大同时连接20
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
server {
listen 80;
server_name localhost;
# 开启请求限流,突发峰值允许缓存10个,超出直接拒绝
limit_req zone=req_limit burst=10 nodelay;
# 开启并发连接限制
limit_conn conn_limit 20;
# 限流返回状态码509
limit_req_status 509;
}配置解释:
单IP每秒最多5次正常请求,短时峰值可以缓冲10个突发请求,不会直接报错,兼顾用户体验和防刷安全;同时限制单IP最大20个并发连接,防止连接池被打满。
四、白名单机制:避免内网、测试、爬虫误杀
直接全局限流很容易误杀办公IP、测试环境、运维机器,生产必须搭配白名单。
# 白名单IP直接放行
geo $limit_white_ip {
default 1;
127.0.0.1 0;
192.168.1.0/24 0;
}
# 白名单不限流
map $limit_white_ip $limit_req_switch {
0 "";
1 req_limit;
}内网IP、运维IP、测试IP全部跳过限流规则,既保证安全,又不影响日常开发运维。
五、精准接口限流:保护核心高危接口

全局限流相对温和,针对下单、支付、提交、查询列表等高危接口,需要单独加强防护,防止单点接口被打崩。
location /api/order/create {
# 下单接口严格限流,每秒2次,无缓冲峰值
limit_req zone=order_limit rate=2r/s nodelay;
proxy_pass http://backend_server;
}核心接口单独限流,普通接口宽松限流,差异化防护,是生产最优策略。
六、恶意IP自动封禁(根治爬虫刷接口)

单纯限流只能拒绝请求,无法阻止持续攻击。针对长期高频恶意IP,可以结合日志+定时脚本拉黑,或者使用Nginx黑名单临时封禁。
高频报错、高频限流触发的IP,基本都是爬虫和恶意访问,直接加入黑名单封禁1小时,可极大降低服务器压力。
七、生产高频踩坑总结
1、只做后端限流,不做网关限流
流量已经穿透进服务才拦截,资源已经被消耗,无法防雪崩。
2、限流参数设置不合理
限制太严误杀正常用户,限制太松起不到防护效果,必须根据业务QPS微调。
3、没有白名单机制
导致内网测试、运维访问被拦截,影响业务排查。
4、所有接口统一限流
核心高危接口和普通接口规则一致,高危接口依然容易被打穿。
八、总结
线上服务稳定性,核心在于脏流量不进服务。
绝大多数接口雪崩、服务卡顿、CPU莫名飙升,根源都是没有网关层防护,任由恶意流量、突发流量穿透到业务层。
Nginx限流作为第一道防线,成本最低、性能最高、防护最稳,配合后端限流形成双层防护,可以彻底解决线上流量击穿、接口雪崩、爬虫刷接口等各类高频故障。
在线
电话
微信
需求
TOP