Nginx 作为统一安全网关代理,集中处理 TLS 终止、身份认证、访问控制、请求过滤和日志审计;配置 HTTPS 强制跳转、禁用弱协议、集成 auth_request 鉴权、IP/UA 限流与过滤、安全透传客户端信息,并启用日志审计。

用 Nginx 做后端集群的统一安全网关代理,核心是把 Nginx 放在所有后端服务之前,集中处理 TLS 终止、身份认证、访问控制、请求过滤和日志审计等安全职责,让后端服务专注业务逻辑。
配置 HTTPS 终止与证书管理
Nginx 作为入口点,应承担 SSL/TLS 解密工作,避免每个后端重复配置证书。使用 ssl_certificate 和 ssl_certificate_key 指向合法证书(推荐 Let’s Encrypt 自动更新),并启用现代加密套件和 HSTS:
- 强制跳转 HTTPS:在 HTTP server 块中用
return 301 https://$host$request_uri; - 禁用弱协议:设置
ssl_protocols TLSv1.2 TLSv1.3; - 限制重协商与会话复用:添加
ssl_session_cache shared:SSL:10m;和ssl_session_timeout 4h;
集成基础身份验证与令牌校验
对敏感接口,可在 Nginx 层做轻量级鉴权。例如用 auth_request 模块委托给独立认证服务(如 OAuth2 Proxy 或自建 JWT 校验服务):
- 定义内部 auth location,如
location = /_validate { proxy_pass http://auth-service; } - 在 upstream 的 location 中加入
auth_request /_validate; - 通过
auth_request_set $user_id $upstream_http_x_user_id;透传用户标识到后端
注意:Nginx 本身不解析 JWT,需由后端或专用 auth service 完成签名验证和 claims 检查。
设置精细化访问控制与请求过滤
利用 map、geo、limit_req 和 modsecurity(可选)实现多维度防护:
- 按 IP 或地域限流:用
geo指令标记可信段,再配合limit_req控制速率 - 封禁恶意 User-Agent 或异常路径:用
if ($http_user_agent ~* "sqlmap|nikto") { return 403; }(慎用 if,优先考虑map + deny) - 过滤危险请求头:用
underscores_in_headers on;配合map清洗或拒绝含X-Forwarded-For多值、Content-Type不匹配的请求
安全透传与后端可信通信
确保后端能可靠识别真实客户端信息,同时防止伪造:
- 只信任来自 Nginx 的转发头:设置
set_real_ip_from 10.0.0.0/8;并启用real_ip_header X-Real-IP; - 主动清除外部可能注入的危险头:用
proxy_hide_header X-Powered-By;和proxy_set_header X-Forwarded-For $remote_addr;(不拼接) - 后端间通信建议走内网+双向 TLS(mTLS),Nginx 与后端之间可用
proxy_ssl_verify on;校验后端证书
不复杂但容易忽略:所有安全策略必须配合日志记录(access_log + custom format 含 $status $request_time $http_authorization),并定期审计 Nginx 配置变更与失败请求模式。


















