优化Nginx HTTPS配置抵御DDoS攻击的核心是减负与过滤:限制IP并发连接数、按路径限速握手请求、精简TLS套件、调小会话缓存、启用OCSP Stapling、强制SNI与协议校验、隐藏版本、限制请求头及超时。

优化 Nginx HTTPS 配置抵御大规模 DDoS 攻击,核心不是堆高带宽或加硬件,而是压缩单次 TLS 开销、快速识别并拦截异常握手行为、防止连接与会话资源被恶意占满。重点在“减负”和“过滤”,而非被动承受。
收紧连接与握手频率
HTTPS 耗尽攻击不靠流量大,而靠高频建连、不发请求、中途断开。必须从源头控量:
- 按 IP 限制并发 SSL 连接数:用
limit_conn控制每个客户端最多维持几个活跃 HTTPS 连接,静态资源站建议设为 3–5,登录页或 API 接口可压到 2 - 对 HTTPS 入口统一限速:用
limit_req给location /或关键路径(如/login)设速率阈值,例如rate=3r/s burst=6,能有效卡住自动化工具反复握手+GET 的组合行为 - 避免全局宽松:不要在
http块直接套用高限值,应按业务敏感度分层配置,比如健康检查路径可白名单放行,管理后台则单独收紧
精简 TLS 协商过程
每次 TLS 握手都会触发非对称加密、证书验证、会话缓存写入等操作,攻击者正是利用这些开销拖垮 CPU 和内存:
- 禁用所有低效套件:移除 RC4、3DES、NULL、EXPORT 类加密算法,在
ssl_ciphers中只保留 ECDHE+AES-GCM 等现代组合,减少协商轮次 - 调小会话缓存容量与超时:
ssl_session_cache shared:SSL:5m(5MB 约支持 2 万会话),ssl_session_timeout 90s,避免攻击者长期占满缓存空间 - 强制启用 OCSP Stapling:
ssl_stapling on; ssl_stapling_verify on;,让 Nginx 主动获取并缓存证书状态,省去客户端直连 CA 查询的额外往返和失败风险
校验 TLS 行为合法性
真实浏览器握手有固定特征,攻击工具往往缺失或异常,可通过条件判断主动拒绝:
- 强制要求 SNI:添加
if ($ssl_server_name = "") { return 444; },无 SNI 的连接直接关闭,过滤掉大量原始 TCP 扫描器 - 检查协议版本与扩展:配合日志字段
$ssl_protocol、$ssl_cipher,对长期使用 TLSv1.0 或固定弱 cipher 的 IP 段做临时封禁 - 结合 User-Agent 与 ALPN:在关键路径中加入简单匹配逻辑,例如拒绝
User-Agent ~* "masscan|gobuster"或缺失 ALPN 的请求(现代浏览器均携带h2或http/1.1)
加固基础运行环境
防护能力最终依赖底层配置是否健壮:
- 隐藏服务标识:
server_tokens off;,避免暴露 Nginx 版本供针对性漏洞利用 - 限制请求头大小:
client_header_buffer_size 2k;和large_client_header_buffers 2 4k;,防畸形头耗尽缓冲区 - 缩短连接生命周期:
keepalive_timeout 15;、client_body_timeout 8;,及时释放半开或慢速连接 - 提升系统承载上限:在
nginx.conf中设置worker_rlimit_nofile 100000;,并在系统级调高fs.file-max和ulimit -n


















