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

使用fastify-rate-limit实现按IP区分各API独立计数的请求限流

实现方案

默认配置下fastify-rate-limit仅使用请求IP作为限流统计的唯一key,因此所有接口共享计数。你只需要新增keyGenerator配置项,自定义统计key为IP+路由路径的组合,即可在保持原有20次/30秒阈值不变的前提下,实现不同API的限流计数相互独立。

修改后的代码如下:

fastify.register(require('fastify-rate-limit'), {
  max: 20, 
  timeWindow: 1000 * 30,
  // 自定义限流统计唯一标识
  keyGenerator: (request) => {
    return `${request.ip}:${request.routerPath}`
  }
});

补充说明

  • 这里使用request.routerPath而非request.url,是为了适配带参数的路由场景,比如/user/:id这类动态路由,不管传入的id参数是什么,都会归到同一个API的限流统计中,符合按接口维度统计的需求。
  • 如果需要进一步区分同一接口的不同请求方法(比如GET和POST请求分开统计),可以修改key拼接规则为${request.ip}:${request.method}:${request.routerPath}即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:36:04