插件窝 干货文章 怎么配置Nginx服务器防止Flood攻击

怎么配置Nginx服务器防止Flood攻击

配置 Nginx 其他 limit 537    来源:    2025-04-25

配置Nginx防止Flood攻击的解决方案

Flood攻击(洪水攻击)是一种通过大量请求淹没服务器的DDoS攻击方式。以下是配置Nginx服务器防止这类攻击的有效方法:

1. 限制连接速率

使用limit_req模块限制请求速率

http {
    limit_req_zone $binary_remote_addr zone=flood:10m rate=10r/s;

    server {
        location / {
            limit_req zone=flood burst=20 nodelay;
            # 其他配置...
        }
    }
}
  • 10r/s表示每秒10个请求
  • burst=20允许突发20个请求
  • nodelay表示不延迟处理突发请求

使用limit_conn模块限制并发连接数

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

    server {
        location / {
            limit_conn addr 5;
            # 其他配置...
        }
    }
}
  • 限制每个IP最多5个并发连接

2. 启用缓存减少后端压力

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        # 其他配置...
    }
}

3. 配置超时设置

server {
    client_body_timeout 10s;
    client_header_timeout 10s;
    keepalive_timeout 5s 5s;
    send_timeout 10s;
    # 其他配置...
}

4. 限制请求体大小

http {
    client_max_body_size 1m;
    # 其他配置...
}

5. 使用Nginx Plus的DDoS防护功能(商业版)

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

server {
    location / {
        limit_req zone=flood burst=200 delay=100;
        # 其他配置...
    }
}

6. 结合Fail2Ban自动封禁恶意IP

  1. 安装Fail2Ban
  2. 创建Nginx过滤器规则
  3. 配置Fail2Ban监控Nginx日志并自动封禁

7. 启用SYN Cookie防护

在系统层面启用(非Nginx配置):

sysctl -w net.ipv4.tcp_syncookies=1

8. 使用Cloudflare或其他CDN服务

将Nginx置于CDN之后,利用CDN的DDoS防护能力。

最佳实践建议

  1. 根据业务需求调整速率限制值
  2. 监控日志和服务器性能,持续优化配置
  3. 定期更新Nginx到最新稳定版本
  4. 结合系统级防护措施(如iptables)
  5. 考虑使用专业的WAF(Web应用防火墙)

以上配置需要根据您的具体业务需求和服务器性能进行调整,建议先在测试环境中验证效果。