Nginx负载均衡器应作为“第一道过滤网”,在proxy_pass前完成异常识别、请求标准化、打标分流;不替代WAF,但可降低后端压力、提升可观测性。

配置 Nginx 负载均衡器实现流量清洗与过滤,关键不是把所有逻辑堆在 upstream 里,而是让 Nginx 在反向代理入口处承担“第一道过滤网”的角色:在转发前识别异常、标准化请求、打标分流,并把干净或标记后的流量均匀分发到后端服务。它不替代专业 WAF 或风控系统,但能显著降低后端压力、提升可观测性、支持快速干预。
基础清洗:拦截非法请求与统一请求格式
所有清洗动作必须放在 location 块内、proxy_pass 之前,确保在请求到达上游前完成初筛:
- 用
map指令匹配危险 URI 或参数(如../、select%20from、etc/passwd),配合error_page 403 = @block统一返回,避免if嵌套陷阱 - 用
rewrite强制标准化:补全结尾斜杠、转小写路径、剥离调试参数(如rewrite ^(.*)\?debug=.*$ $1? permanent;) - 清理并重设头部:
proxy_set_header X-Forwarded-For ""(禁用伪造),再由 Nginx 自设真实 IP;添加可信标识如X-Proxy-Stage: lb和X-Request-ID: $request_id
动态分流:按特征把流量导向不同清洗强度的后端
负载均衡层要支持“有区别地分发”,而非简单轮询:
- 用
geo或map构建 IP 黑白名单,命中恶意段直接return 444(静默关闭连接)或转发至蜜罐 upstream - 按请求特征路由:例如识别
Cookie ~* "user_type=premium"或$http_x_env = "staging",将请求proxy_pass到对应灰度集群 - 借助
split_clients实现按 IP 哈希的固定比例分流(如 85% 正常流量 → 高速清洗节点,10% → 行为分析节点,5% → 沙箱验证节点)
结构化日志与清洗结果透传
日志是后续分析和策略调优的基础,需记录“做了什么”而不仅是“发生了什么”:
- 自定义
log_format,加入清洗动作变量:set $filter_action "pass";,在拦截时设为"block_xss"或"redirect_canonical" - 透传关键上下文:
$upstream_http_x_trace_id(链路 ID)、$sent_http_content_type(响应类型)、$request_length(原始请求大小) - 记录 TLS 元数据(HTTPS 环境下):
X-TLS-Version $ssl_protocol、X-Cipher $ssl_cipher、X-Client-Cert-Hash(用于高敏接口风控建模)
与后端清洗服务协同工作
Nginx 不做深度清洗,而是做好“特征搬运工”和“策略执行器”:
- 用
proxy_set_header把原始特征完整透传:真实 IP(X-Real-IP)、UA(X-User-Agent)、Referer、TLS 版本、请求时间戳等 - 对需深度处理的请求,改写 URI 前缀(如
rewrite ^/(.*)$ /scrub/$1 break;)或添加 header(如X-Scrub-Level: high),让后端路由引擎识别处理优先级 - 若集成 OpenResty,可用
access_by_lua_block向 Redis 查询实时规则(如 IP 当前请求频次、设备指纹风险分),返回结果决定是否放行或打标


















