最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Web 服务防 DDoS 攻击:Nginx 调优策略实践
时间:2026-07-12 09:03:47 编辑:袖梨 来源:一聚教程网
Nginx 是防应用层 DDoS 的务实首道缓冲,非万能盾;通过分层策略实现连接限制(limit_conn)、请求速率控制(limit_req)、协议加固及日志驱动动态拦截。
Web 服务防 DDoS 攻击,Nginx 不是“万能盾”,而是最务实的第一道缓冲带。它无法替代高防IP或流量清洗中心,但对应用层攻击(如 HTTP Flood、CC 攻击)响应快、开销低、规则灵活——关键在于策略不堆砌,而要分层匹配真实业务节奏。
连接数限制:防连接耗尽型攻击
攻击者常维持大量空闲 TCP 连接,挤占服务器 fd 资源和 worker 进程。Nginx 的 limit_conn 模块直接控制并发连接上限,属于连接层防御。
- 在 http 块中定义共享内存区:
limit_conn_zone $binary_remote_addr zone=perip:10m;(用二进制 IP 地址节省空间) - 在 location 或 server 块中启用:
limit_conn perip 8;(普通 Web 页面建议 5–10;API 接口可设为 20–50) - 配合
limit_conn_log_level warn;和limit_conn_status 429;,让日志可追踪、状态码语义清晰
请求速率限制:控高频请求洪流
单个连接内高频发包(如秒刷 100 次搜索接口)是 CC 攻击典型特征。limit_req 模块基于漏桶算法平滑处理,比简单拒绝更友好。
- 定义限速区域:
limit_req_zone $binary_remote_addr zone=reqps:10m rate=15r/s;(每秒 15 请求是多数动态页面的安全起点) - 应用时注意 burst 与 nodelay 组合:
limit_req zone=reqps burst=30 nodelay;允许短时突发,避免误伤正常用户点击或前端重试 - 对资源消耗大的路径单独限速,例如:
location /search { limit_req zone=search_limit burst=5; }
请求内容与协议层加固
很多攻击依赖畸形请求或非常规行为绕过基础限流。这部分不增加性能负担,但能过滤掉大量低级扫描和试探流量。
- 禁用危险 HTTP 方法:
if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$) { return 444; }(444 是 Nginx 特有“静默关闭”状态) - 限制请求头大小:
client_header_buffer_size 2k;和large_client_header_buffers 4 4k;防止 header 溢出攻击 - 限制请求体大小:
client_max_body_size 2m;(上传接口除外,需按业务单独放开)
动态响应与日志协同
静态规则容易被绕过。把 Nginx 日志作为“攻击雷达”,配合简单脚本可实现轻量级动态黑名单。
- 在 log_format 中加入 $status、$request_time、$http_user_agent,便于识别异常模式
- 用 logrotate + awk/grep 定时分析 429/444/503 高频 IP,自动写入 deny 规则或提交给 fail2ban
- 对已确认恶意 IP,优先用
deny xxx.xxx.xxx.xxx;硬拦截,比限流更彻底
相关文章
- 尽管工作室已关闭:Wreckreation 2 仍正式公布:距离前作发布仅九个月 07-22
- 率土之滨武将强度排行 率土之滨武将开荒搭配攻略表 07-22
- 挖掘者米娜怎样召唤伙伴成就攻略分享 07-22
- 仙灵物语最强阵容搭配攻略:仙灵物语高战力阵容推荐与实战解析 07-22
- 天堂2盟约怎么升级快:天堂2盟约快速升级技巧与高效练级指南 07-22
- 《幻兽帕鲁》世界树内部进入方法介绍 07-22