配置限流限速
限流限速是 API 管理中的一种常用技术,用于为用户设置配额并保护 API 免受网络爬虫和恶意行为者产生的过多请求的影响。这有助于确保上游服务的公平使用并提高基础设施的可用性。

APISIX 提供了许多限流限速插件,可以轻松配置以满足你的需求:
limit-count:限制给定时间间隔内的请求数量。limit-req:限制给定时间间隔内的请求数量和设置容量(漏桶算法)。limit-conn:限制并发连接数。graphql-limit-count:限制给定时间间隔内 GraphQL 操作或变更的深度。这是一项企业功能。
本指南将向你展示如何为不同 API 定价计划中的消费者实施不同的限流限速配额,如 消费者组 中所示。你可以根据需要用其他可用的限流限速插件替换本指南中使用的 limit-count 插件。
前置条件
创建消费者组
为具有较低 API 配额的基本计划创建一个消费者组:
curl "http://127.0.0.1:9180/apisix/admin/consumer_groups" -X PUT -d '
{
"id": "basic_plan",
"plugins": {
"limit-count": {
"count": 2,
"time_window": 30,
"rejected_code": 429
}
}
}'
❶ count, time_window:允许在 30 秒的时间间隔内进行 2 次请求。
❷ rejected_code:如果请求超过配额,则返回 HTTP 429 Too Many Requests 响应。
同样,为具有较高 API 配额的高级计划创建一个消费者组:
curl "http://127.0.0.1:9180/apisix/admin/consumer_groups" -X PUT -d '
{
"id": "premium_plan",
"plugins": {
"limit-count": {
"count": 20,
"time_window": 30,
"rejected_code": 429
}
}
}'
创建消费者
在基本计划中创建一个消费者 JohnDoe:
curl "http://127.0.0.1:9180/apisix/admin/consumers" -X PUT -d '
{
"username": "JohnDoe",
"group_id": "basic_plan",
"plugins": {
"key-auth": {
"key": "john-key"
}
}
}'
在基本计划中创建第二个消费者 JaneDoe:
curl "http://127.0.0.1:9180/apisix/admin/consumers" -X PUT -d '
{
"username": "JaneDoe",
"group_id": "basic_plan",
"plugins": {
"key-auth": {
"key": "jane-key"
}
}
}'
在高级计划中创建一个消费者 FetchBot:
curl "http://127.0.0.1:9180/apisix/admin/consumers" -X PUT -d '
{
"username": "FetchBot",
"group_id": "premium_plan",
"plugins": {
"key-auth": {
"key": "bot-key"
}
}
}'
创建路由
创建一个启用了密钥认证的路由:
curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
"id": "rate-limiting",
"uri": "/internal",
"plugins": {
"key-auth": {}
},
"upstream" : {
"nodes": {
"mock.api7.ai:443": 1
},
"pass_host": "node",
"scheme": "https"
}
}'