插件窝 干货文章 怎么使用Nginx、Nginx Plus抵御DDOS攻击

怎么使用Nginx、Nginx Plus抵御DDOS攻击

Nginx server 限制 zone 595    来源:    2025-04-25

使用Nginx和Nginx Plus抵御DDoS攻击的全面指南

DDoS攻击(分布式拒绝服务攻击)是现代网络面临的主要安全威胁之一。作为高性能的Web服务器和反向代理,Nginx和Nginx Plus提供了多种机制来帮助抵御这类攻击。

基础防御措施

1. 连接限制

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_conn addr 10;

    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    server {
        location / {
            limit_req zone=one burst=20 nodelay;
        }
    }
}
  • limit_conn_zone 定义共享内存区域来存储连接状态
  • limit_conn 限制单个IP的连接数(上例为10)
  • limit_req_zone 定义请求速率限制区域
  • limit_req 限制请求速率(上例为每秒10个请求,突发20个)

2. 关闭慢连接

server {
    client_body_timeout 5s;
    client_header_timeout 5s;
    keepalive_timeout 5s;
    send_timeout 5s;
}

这些超时设置可以防止攻击者保持长时间连接消耗资源。

Nginx Plus专属功能

1. 高级速率限制

http {
    limit_req_zone $binary_remote_addr zone=per_ip:10m rate=10r/s;
    limit_req_zone $server_name zone=per_server:10m rate=100r/s;

    server {
        location / {
            limit_req zone=per_ip burst=20 nodelay;
            limit_req zone=per_server burst=100;
        }
    }
}

Nginx Plus支持更复杂的速率限制策略,包括多维度限制。

2. 实时活动监控

Nginx Plus的实时活动监控API可以帮助识别攻击模式:

server {
    location /api/ {
        api write=on;
    }
}

通过监控API可以获取: - 当前活动连接 - 请求速率 - 错误率等关键指标

3. 会话持久性限制

upstream backend {
    zone backend 64k;
    server 10.0.0.1;
    server 10.0.0.2;

    sticky cookie srv_id expires=1h;
    sticky_learn;
}

限制单个客户端只能与特定后端服务器通信。

高级防御策略

1. 地理IP限制

geo $blocked_ip {
    default 0;
    1.2.3.4/24 1;
    5.6.7.8 1;
}

server {
    if ($blocked_ip) {
        return 444;
    }
}

2. 基于User-Agent的过滤

map $http_user_agent $bad_agent {
    default 0;
    "~*bot" 1;
    "~*spider" 1;
    "~*scan" 1;
}

server {
    if ($bad_agent) {
        return 403;
    }
}

3. 验证码挑战

对于可疑流量,可以返回验证码页面:

location / {
    error_page 403 = @captcha;
    if ($http_cookie !~* "passed_captcha") {
        return 403;
    }
}

location @captcha {
    rewrite ^ /captcha.html;
}

监控与自动化

  1. 设置日志监控:监控异常请求模式
  2. 与SIEM系统集成:将Nginx日志发送到安全信息与事件管理系统
  3. 自动化响应:使用Nginx Plus API动态调整配置

最佳实践

  1. 定期更新Nginx到最新版本
  2. 结合云服务提供商(如AWS Shield、Cloudflare等)的DDoS防护
  3. 实施多层防御策略
  4. 进行定期压力测试
  5. 制定详细的应急响应计划

通过合理配置Nginx/Nginx Plus的这些功能,可以显著提高网站对DDoS攻击的抵抗能力,同时保持对正常用户的良好服务体验。