nginx负载均衡安全配置需满足等保2.0、gdpr等合规要求:强制tls 1.2+、禁用弱套件、启用hsts;隐藏版本与拓扑、限制http方法;代理行为可控、设超时与体长限制;日志含关键字段并轮转,健康检查防单点故障。

配置 Nginx 负载均衡器满足安全合规要求,核心是兼顾流量分发能力与基础安全控制,不依赖额外硬件或第三方网关也能达成等保2.0、GDPR 或金融行业常见基线(如PCI DSS对传输加密、日志审计的要求)。关键不在堆功能,而在每处配置有明确安全意图。
启用 HTTPS 并强制 TLS 1.2+
所有对外暴露的负载均衡入口必须使用 HTTPS,禁用弱协议和不安全加密套件:
- 在 server 块中配置
listen 443 ssl http2,并指定强 TLS 版本:ssl_protocols TLSv1.2 TLSv1.3; - 禁用已知风险的加密套件,例如:
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; - 开启 HSTS(HTTP Strict Transport Security),防止降级攻击:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
隐藏敏感信息与最小化暴露面
避免泄露 Nginx 版本、后端拓扑及内部路径:
- 关闭服务器标识:
server_tokens off;(放在 http 或 server 级) - 不向后端透传原始 Host 头,改用可信值:
proxy_set_header Host $host;或更严格地固定为后端期望域名 - 清除或重写可能携带敏感上下文的请求头,如:
proxy_set_header X-Forwarded-For "";(若后端不依赖该字段),或仅保留经验证的 IP 段 - 禁用未使用的 HTTP 方法(如 TRACE、OPTIONS):
if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|PATCH)$) { return 405; }
强化代理行为与访问控制
确保 proxy_pass 行为可控、可审计、防越权:
- 始终使用显式域名或带端口的 upstream 名称,避免
proxy_pass http://127.0.0.1:8080/这类硬编码地址(易被 SSRF 利用) - 设置合理超时,防慢速攻击:
proxy_connect_timeout 5s; proxy_send_timeout 30s; proxy_read_timeout 30s; - 限制请求体大小,防 DoS:
client_max_body_size 10m; - 基于 IP 或 token 实施接入层访问控制(如配合 geoip2 模块或 auth_request):
allow 203.0.113.0/24; deny all;
审计日志与健康状态可追溯
合规性审查常要求“谁、何时、访问了什么、结果如何”:
- 定义含关键字段的自定义日志格式,至少包括:
$remote_addr、$time_local、$request、$status、$upstream_addr(后端目标)、$upstream_response_time - 开启 access_log 和 error_log,并确保日志轮转与权限隔离(如
chmod 640 /var/log/nginx/access.log) - 为 upstream 配置主动健康检查(需 nginx plus 或开源版 + lua 模块),或至少启用被动检查:
fail_timeout=30s max_fails=3;,并在日志中记录失败事件











