Flood攻击(洪水攻击)是一种通过大量请求淹没服务器的DDoS攻击方式。以下是配置Nginx服务器防止这类攻击的有效方法:
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
表示不延迟处理突发请求http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location / {
limit_conn addr 5;
# 其他配置...
}
}
}
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;
# 其他配置...
}
}
server {
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# 其他配置...
}
http {
client_max_body_size 1m;
# 其他配置...
}
limit_req_zone $binary_remote_addr zone=flood:10m rate=100r/s;
server {
location / {
limit_req zone=flood burst=200 delay=100;
# 其他配置...
}
}
在系统层面启用(非Nginx配置):
sysctl -w net.ipv4.tcp_syncookies=1
将Nginx置于CDN之后,利用CDN的DDoS防护能力。
以上配置需要根据您的具体业务需求和服务器性能进行调整,建议先在测试环境中验证效果。