🛡️ Rate Limiting 限流防护

学习如何防御 DDoS 攻击

📊 服务器状态

0
总请求数
0
请求/秒
0
被封禁 IP
正常
服务器状态

⚙️ 限流配置

限流开关: 关闭

限流规则:

• 每个 IP 每秒最多 10 次请求

• 超限后封禁 5 秒

🧪 对比测试

📖 限流原理

令牌桶算法

// 简化的限流逻辑
const ipRequests = new Map()

function rateLimit(ip) {
  const now = Date.now()
  const record = ipRequests.get(ip) || { count: 0, windowStart: now }
  
  // 重置时间窗口
  if (now - record.windowStart > 1000) {
    record.count = 0
    record.windowStart = now
  }
  
  record.count++
  
  if (record.count > MAX_RPS) {
    return false  // 拒绝请求
  }
  
  return true  // 允许请求
}

滑动窗口算法

更精确的限流方式,避免窗口边界的突发流量问题。

分布式限流

使用 Redis 等中间件实现跨服务器的统一限流。

🛡️ 其他防护手段

CDN

Cloudflare、阿里云 CDN 等,分散流量

WAF

Web 应用防火墙,识别恶意请求

验证码

区分人机,阻止自动化攻击

// Nginx 限流配置
http {
  limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
  
  server {
    location /api/ {
      limit_req zone=api burst=20 nodelay;
    }
  }
}