跳至主要内容
短.be

速率限制

在一定时间内限制 API 或服务的请求次数的机制。用于保护服务器并确保公平使用。

2026年8月23日 · 约 1 分钟阅读

安全

速率限制 (Rate Limiting) 是对 API 或服务的请求数量在一定时间窗口内设置上限的机制。例如「每分钟最多 60 个请求」「每天最多 1,000 个请求」,超出上限的请求会收到 HTTP 429 (Too Many Requests) 响应。这个状态码由 RFC 6585 定义,用于告知客户端在一定时间内发送了过多请求。

速率限制有三个主要目的:第一是保护服务器 (防止大量请求导致服务宕机),第二是确保公平性 (防止个别用户独占资源),第三是成本控制 (管理云服务的按量计费)。

短链接服务中,速率限制应用于多个场景:URL 缩短 API 的请求次数限制 (防止垃圾链接的批量生成)、短链接访问次数限制 (缓解 DDoS 攻击)、管理后台的登录尝试次数限制 (防止暴力破解) 等。

速率限制的算法主要有四种:固定窗口 (每分钟重置计数器)、滑动窗口 (持续计算最近一分钟内的请求数)、令牌桶 (以固定速率补充令牌,每次请求消耗一个令牌)、漏桶 (以固定速率处理请求,超出部分排队等待)。

开发者在使用 API 时应对速率限制做好应对:检查响应头,根据剩余请求数调整请求频率。表示剩余量的响应头名称因服务而异,X-RateLimit-Limit、X-RateLimit-Remaining 这类名称是长期形成的惯例;标准的 RateLimit 响应头仍在制定中,截至 2026 年 8 月还处于 Internet-Draft 阶段。收到 429 响应时,如果带有 Retry-After 头,就按它指示的时间等待后重试;如果没有该头,或者等待后重试仍然返回 429,则逐步延长等待时间,即指数退避。两者是不同的手段,按 Retry-After 等待本身并不等于指数退避。

分享到 XHatena

这篇文章对您有帮助吗?

相关术语

相关文章

常见问题

触发速率限制后该怎么办?
检查 HTTP 429 响应中的 Retry-After 头,按它指示的时间等待后重试。Retry-After 既可以是等待的秒数,也可以是可以重新发送请求的日期时间,因此实现时最好同时支持两种格式。该响应头并非总会返回,没有时就逐步延长等待时间后重试。如果自己发送的请求并不多却触发了限制,请确认限制的计数单位:按 IP 地址计数的服务会把同一出口 IP 下的用户 (例如共享线路或公司网络) 合并计算。如果频繁触发限制,应增大请求间隔或考虑升级到更高级别的套餐。
速率限制一般设置为多少?
因服务而异。免费方案通常为每分钟 10 至 60 个请求,付费方案为每分钟 100 至 1,000 个请求。短链接服务的 API 一般会限制每小时可创建的链接数,有时还会同时设置每分钟的上限。具体数值因服务和套餐差异很大,使用前请查阅各服务的 API 文档。
如何在自己的 API 中实现速率限制?
常见方案包括 Nginx 的 limit_req 模块、API 网关 (如 AWS API Gateway) 的内置功能、以及使用 Redis 实现令牌桶算法。小规模应用仅靠 Nginx 配置就能满足需求。

把知识用到真实链接上

免费缩短网址