API 被刷,先限流。按客户端地址给每个调用方设速率上限,恶意刷子自然熄火。

防护配置

limit_req_zone $binary_remote_addr zone=api:10m rate=5r/s;
location /api/ {
    limit_req zone=api burst=10 nodelay;
    limit_req_status 429;
}

要点速览

  • rate 是稳态速率,burst 允许短时突发。
  • 返回 429 让客户端知道该退避。
  • 对登录等关键接口限更严,防撞库。
速率限制是 API 防刷的第一道墙:每人一份额度,谁超谁等着。