Nginx如何限制连接数以防止DDoS?
2025-04-14
5
参考资料
限制连接数原理
使用
limit_conn_module
模块限制单个IP的并发连接数通过
limit_req_module
模块限制请求速率配置步骤
http { # 定义共享内存区域 limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s; server { # 限制单个IP并发连接数为5 limit_conn conn_limit_per_ip 5; # 限制请求速率(每秒10个请求,突发20个) limit_req zone=req_limit_per_ip burst=20 nodelay; } }
关键参数说明
limit_conn_zone
: 定义连接限制的共享内存区域zone=name:size
: 区域名称和内存大小$binary_remote_addr
: 以二进制格式存储客户端IPrate=10r/s
: 每秒允许10个请求burst
: 允许的突发请求数完整示例配置
http { limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { listen 80; server_name example.com; # 每个IP最多5个连接 limit_conn perip 5; # 整个服务器最多100个连接 limit_conn perserver 100; # 请求速率限制 limit_req zone=perip burst=10 nodelay; } }
验证方法
使用
ab
或wrk
工具进行压力测试检查Nginx错误日志
/var/log/nginx/error.log
中的503错误使用
nginx -t
测试配置语法
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。