一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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; 硬拦截,比限流更彻底

热门栏目