学习如何防御 DDoS 攻击
限流规则:
• 每个 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 等中间件实现跨服务器的统一限流。
Cloudflare、阿里云 CDN 等,分散流量
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;
}
}
}