插件窝 干货文章 nginx碰到ddos怎么解决

nginx碰到ddos怎么解决

Nginx limit zone location 381    来源:    2025-04-07

应对Nginx DDoS攻击的解决方案

当Nginx服务器遭遇DDoS攻击时,可以采取以下多层次防御措施:

基础防御措施

  1. 限制连接速率

    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
    
    server {
       limit_req zone=req_limit burst=20;
       limit_conn conn_limit 10;
    }
    
  2. 限制单个IP连接数

    http {
       limit_conn_zone $binary_remote_addr zone=perip:10m;
       limit_conn perip 20;
    }
    
  3. 启用SYN Cookie防护

    sysctl -w net.ipv4.tcp_syncookies=1
    

中级防御策略

  1. 使用Nginx的ngx_http_limit_req_module模块

    http {
       limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
       server {
           location / {
               limit_req zone=one burst=5;
           }
       }
    }
    
  2. 配置Nginx缓存

    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m;
    
    server {
       location / {
           proxy_cache my_cache;
           proxy_cache_valid 200 302 10m;
       }
    }
    
  3. 启用HTTP/2和Gzip压缩

    http {
       gzip on;
       gzip_types text/plain application/json;
       server {
           listen 443 ssl http2;
       }
    }
    

高级防御方案

  1. 使用Cloudflare或其他CDN服务

    • 启用CDN的DDoS防护功能
    • 配置WAF规则
  2. 部署Fail2Ban

    # 安装Fail2Ban
    apt-get install fail2ban
    
    # 配置Nginx相关规则
    
  3. 使用专业的DDoS防护服务

    • AWS Shield/Azure DDoS Protection
    • Cloudflare Pro/Enterprise
    • Akamai Prolexic

应急响应措施

  1. 临时封禁IP

    location / {
       deny 192.168.1.1;
       allow all;
    }
    
  2. 启用Nginx的auth_basic

    location / {
       auth_basic "Restricted";
       auth_basic_user_file /etc/nginx/.htpasswd;
    }
    
  3. 切换至维护模式

    location / {
       return 503;
       error_page 503 @maintenance;
    }
    
    location @maintenance {
       rewrite ^(.*)$ /maintenance.html break;
    }
    

监控与分析

  1. 实时监控工具

    # 查看实时连接
    netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    
    # Nginx状态监控
    ngxtop
    
  2. 日志分析

    # 分析访问日志
    awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 20
    

以上措施应根据实际攻击类型和规模灵活组合使用,建议从基础防御开始,逐步升级防护级别。对于大规模DDoS攻击,建议寻求专业安全服务支持。