单个api登录接口防暴力破解需三层配合:全局定义limit_req_zone区域、location中精准匹配路径并配置burst/nodelay、叠加limit_conn限制并发连接;可选geo+map实现白名单豁免。

针对单个 API 登录接口(如 /api/login)做防暴力破解限流,核心是用 limit_req 在请求进入后端前就拦截高频尝试,不依赖业务层,响应快、效果直接。关键不在“加指令”,而在“三层配合”:全局定义区域 + 精准匹配路径 + 合理参数组合。
在 http 块定义专用限流区域
必须放在 http{} 最外层,不能写在 server 或 location 里:
limit_req_zone $binary_remote_addr zone=login_limit:5m rate=5r/m;-
$binary_remote_addr比$remote_addr更省内存、查询更快,适合高并发场景 -
rate=5r/m表示每分钟最多 5 次——贴合人工登录节奏,明显区别于机器扫号行为 -
5m内存足够支撑数万个 IP 的状态记录,避免过度占用
在 location 中精准启用限流
只作用于真实登录入口,比如 /api/login,不要笼统配在 / 或 /api/ 下:
location /api/login {limit_req zone=login_limit burst=3 nodelay;limit_req_status 429;proxy_pass http://auth_backend;}
burst=3 允许短时多发 3 次(比如用户误点重试),nodelay 表示超出即刻拒绝,不排队;limit_req_status 429 统一返回标准限流码,便于前端识别和日志追踪。
叠加并发连接限制增强防护
仅控请求数不够,攻击者可能开多个连接轮询。建议同步限制单 IP 并发连接数:
- 在
http块加:limit_conn_zone $binary_remote_addr zone=login_conn:5m; - 在同个
location块内加:limit_conn login_conn 3; - 这样每个 IP 最多同时建立 3 个连接,大幅增加暴力破解成本
可选:白名单豁免内部或运维流量
避免误伤监控、健康检查或内网调试请求:
- 用
geo和map构建白名单变量,例如将内网段设为$limit_bypass = 1 - 修改限流 key 为:
limit_req_zone $limit_bypass$binary_remote_addr zone=login_limit:5m rate=5r/m; - 当
$limit_bypass = 1,key 变成"1+IP",而该组合未在 zone 中定义过,自然跳过限流
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











