限制网站流量和并发连接数是优化服务器性能、防止资源过载的关键措施。本文详细介绍通过Nginx、Apache配置、CDN服务及云平台工具实现流量控制的方法,并提供代码示例与最佳实践,帮助管理员高效管理服务器负载。
一、为什么需要限制流量和并发连接数?
当网站遭遇突发流量或恶意攻击时,无限制的访问可能导致:
- 服务器资源耗尽(CPU/内存/带宽)
- 响应速度显著下降甚至服务中断
- 数据库连接池被占满
二、Nginx配置方案
1. 限制单个IP的并发连接数
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 {
location / {
limit_conn conn_limit_per_ip 5; 每个IP最多5个并发连接
limit_req zone=req_limit_per_ip burst=20 nodelay; 每秒10请求,突发允许20
}
}
}
2. 全局流量限制
server {
listen 80;
client_max_body_size 2m; 限制单次请求体大小
keepalive_timeout 15s; 缩短连接保持时间
}
三、Apache配置方案
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2 每秒同一页面请求上限
DOSSiteCount 50 每秒总请求上限
DOSBlockingPeriod 10 违规IP封锁时间(秒)
</IfModule>
四、云平台解决方案
1. AWS WAF速率规则
- 在Web ACL中创建”Rate-based rule”
- 设置每5分钟允许的请求阈值(如2000次)
2. 阿里云SLB流量控制
通过负载均衡控制台:
- 进入监听规则配置
- 启用”QPS限制”功能
- 设置精确到域名/URL的阈值
五、高级防护策略
场景 | 解决方案 |
---|---|
CC攻击防护 | 启用验证码挑战或JavaScript质询 |
API接口保护 | 实施令牌桶算法限流 |
下载资源限制 | 设置带宽阈值(如Cloudflare的Rate Limiting) |
六、监控与优化建议
- 使用Prometheus + Grafana监控实时连接数
- 定期分析Nginx的
access.log
中的HTTP状态码分布 - 对静态资源启用CDN缓存,减少源站压力
评论