You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过API网关Apache APISIX实现服务速率限制

Apache APISIX 客户端访问速率限制配置方案

Apache APISIX 内置了多款开箱即用的限流插件,不需要额外开发,直接通过配置即可实现不同维度的速率管控,满足防恶意攻击的防护需求。所有限流规则支持绑定在路由、服务、全局规则三个层级,生效优先级为路由 > 服务 > 全局规则,可根据防护范围灵活选择。

核心限流插件及配置示例

根据不同的防护场景,选择对应插件即可,常规防恶意攻击场景建议组合使用多个插件,做多层拦截。

1. 基于请求速率的精准限流(高频刷接口场景首选)

使用 limit-req 插件,基于漏桶算法实现精准的QPS控制,适合拦截短时间内高频发起请求的恶意扫描、刷接口行为。
举个最常用的配置:限制单个客户端源IP访问目标接口的速率为10QPS,允许最多5个突发请求缓冲,超出阈值直接返回拦截提示:

{
  "plugins": {
    "limit-req": {
      "rate": 10,
      "burst": 5,
      "key_type": "var",
      "key": "remote_addr",
      "rejected_code": 429,
      "rejected_msg": "请求过于频繁,请稍后再试"
    }
  }
}

核心参数说明:

  • rate:每秒允许的平均请求数,即设定的基准QPS阈值
  • burst:突发请求缓冲队列长度,用来兼容正常业务的短时间流量峰值,避免误拦截
  • key:限流统计维度,默认填remote_addr就是按客户端源IP限流;如果是登录后接口,可替换为http_x_user_id(对应请求头里的用户ID字段),按用户维度限流,避免同一公网出口下的正常用户被误杀
  • rejected_code:触发限流时返回的HTTP状态码,常规用429(请求过多)或者503(服务不可用)都可以
  • rejected_msg:触发限流时返回的提示文本,可按需自定义

2. 并发连接数限制(防连接耗尽攻击)

如果要防御恶意客户端发起大量长连接占满服务连接池的攻击,使用limit-conn插件即可,比如限制单个客户端IP最多同时持有20个并发连接:

{
  "plugins": {
    "limit-conn": {
      "conn": 20,
      "burst": 10,
      "key_type": "var",
      "key": "remote_addr",
      "rejected_code": 503,
      "rejected_msg": "当前请求人数过多,请稍后重试",
      "default_conn_delay": 0.1
    }
  }
}

其中conn为允许的最大并发连接数,default_conn_delay为连接数超过基准阈值、但还在burst缓冲范围内时的请求延迟,用来平滑削峰,避免流量突刺直接打垮上游服务。

3. 固定时间窗口总量限流(防周期内刷量)

如果需要限制客户端在固定时间周期内的总请求数,比如单个IP每分钟最多请求600次,用limit-count插件实现即可:

{
  "plugins": {
    "limit-count": {
      "count": 600,
      "time_window": 60,
      "key_type": "var",
      "key": "remote_addr",
      "rejected_code": 429,
      "rejected_msg": "单位时间内请求次数超出限制",
      "policy": "local"
    }
  }
}

核心参数说明:

  • count:单个时间窗口内允许的总请求数
  • time_window:时间窗口长度,单位为秒,填60即为1分钟
  • policy:限流计数的存储策略,单节点部署填local即可,性能最高;如果是APISIX集群部署,建议替换为redis存储,保证多节点之间的限流计数统一,不会出现集群下限流失效的问题。

防恶意攻击的配置优化建议

  • 不要只用单一限流规则,建议同时配置QPS限流、并发连接数限流两层规则,阈值设置比业务峰值高20%-30%,兼顾防护效果和正常用户体验
  • 公网接口优先按IP做基础限流,登录态接口叠加按用户ID的限流规则,避免误拦截
  • 建议配置一个阈值宽松的全局限流兜底规则,防止新上线路由漏配限流规则被恶意打穿
  • 触发限流的请求可以同步记录日志,对持续发起恶意请求的IP,可叠加IP黑名单插件做永久拦截

内容的提问来源于stack exchange,提问作者feihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 22:57:33