在nginx的http块中配置全局安全头与超时阈值可提升抗攻击能力与连接健壮性:一、添加server_tokens off;等安全响应头防xss、点击劫持等;二、调低client_header_timeout 10s;等超时参数防慢速攻击;三、启用ssl_handshake_timeout 5s;等tls防护;四、需nginx -t校验并reload生效。

在 Nginx 的 http 块中配置全局安全头与超时阈值,是提升服务抗攻击能力与连接健壮性的基础操作。这两类配置不依赖具体域名或路径,统一生效、易于维护,且对慢速攻击(如 Slow Headers、SSL DoS)有直接抑制作用。
一、添加关键安全响应头
安全头应放在 http 块顶层,避免被 server 或 location 覆盖。它们不增加性能开销,但能显著降低 XSS、点击劫持、MIME 嗅探等风险:
-
隐藏版本信息:防止攻击者利用已知漏洞定向打击,加一行
server_tokens off; -
防御页面嵌套:用
add_header X-Frame-Options "SAMEORIGIN";阻止被 iframe 嵌入恶意站点 -
启用浏览器 XSS 过滤:加
add_header X-XSS-Protection "1; mode=block"; -
禁用 MIME 类型猜测:加
add_header X-Content-Type-Options "nosniff"; -
限制引用来源泄露:推荐
add_header Referrer-Policy "strict-origin-when-cross-origin"; -
设置内容安全策略(CSP):例如
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; img-src 'self' data:;";,按实际资源加载需求调整
二、收紧客户端连接超时参数
默认 60 秒的超时值对现代网络过于宽松,容易被慢速攻击利用。建议在 http 块中统一设为更激进的值:
-
client_header_timeout 10s;:客户端必须在 10 秒内发完全部请求头(含\r\n\r\n),防 Slow Headers 攻击 -
client_body_timeout 15s;:POST/PUT 场景下,两次 Body 数据包间隔不能超 15 秒,防 Slow Body -
send_timeout 20s;:Nginx 向客户端发送响应时,两次 write 间隔超 20 秒即断连,避免弱网拖死连接 -
keepalive_timeout 25s;:长连接空闲超过 25 秒关闭,比默认 75 秒更有效释放连接槽位 -
reset_timedout_connection on;:超时后发 RST 而非 FIN,更快回收内核 socket 状态
三、补充 SSL/TLS 握手级防护(需 Nginx ≥1.19.0)
若启用 HTTPS,应在 http 块中加入 TLS 层超时控制,这是防御 Slow-SSL 攻击的第一道防线:
-
ssl_handshake_timeout 5s;:强制 TLS 握手在 5 秒内完成,拦截异常 ClientHello - 搭配
limit_conn_zone $binary_remote_addr zone=ssl_conn:10m;和后续 server 块中的limit_conn ssl_conn 20;,可硬性限制每个 IP 的并发 SSL 连接数
四、验证与生效要点
所有配置写入 http 块后,需执行两步确保生效:
- 运行
nginx -t检查语法是否正确,特别注意分号和单位(如10s不可写成10或10sec) - 执行
nginx -s reload平滑重载,无需中断服务 - 可通过 curl -I 访问任意接口,确认响应头中已包含新增的安全字段
- 观察 error.log 中是否减少
client timed out while reading client request类报错,验证超时生效











