Nginx高效安全架构采用分层设防:网络层IP准入(allow/deny+real_ip配置)、协议与请求特征过滤(map+if+valid_referers)、身份认证网关(Basic Auth/JWT)、流量清洗与限速(limit_conn/limit_req)。

网络层 IP 精准准入
这是开销最小、响应最快的首道防线,适合管理后台、运维接口等高敏感路径。
- 用 allow / deny 指令控制访问,顺序必须严格:允许项写在
deny all之前; - 支持 CIDR(如
10.0.0.0/8)、IPv6(如2001:db8::/32),也支持配合geo模块做地域级控制; - 若前端有 CDN 或反向代理,需配置
set_real_ip_from并使用$http_x_forwarded_for,否则真实 IP 无法识别,规则会失效。
协议与请求特征过滤
在 IP 层之上,对 HTTP 请求头、路径、方法等静态特征做轻量级拦截,防爬虫、防扫描效果明显。
- 推荐用 map + if 预定义变量(如屏蔽
sqlmap、nikto等恶意 UA),比嵌套if更稳定; - 敏感资源(如图片、API)可配合
valid_referers限制引用来源,防止盗链; - 避免在
location块内滥用if,优先用正则匹配的location实现路径级拦截。
身份认证网关
对 /api/v1/internal、/metrics 等敏感路径启用统一鉴权,避免后端重复校验。
-
Basic Auth 适合临时调试或运维入口,但必须强制 HTTPS,且密码文件权限要设为
640; -
JWT 验证(需 Nginx Plus 或第三方模块如
nginx-jwt)可校验签名、过期时间、aud/iss字段,并将用户 ID 注入请求头(如X-User-ID)供后端使用; - 认证不等于授权,Nginx 只负责“你是谁”,权限判定仍应由业务系统完成。
流量清洗与行为限速
应对 CC 攻击、爬虫泛滥、连接耗尽等资源型威胁,关键在合理设定阈值,兼顾防御与可用性。
- 用
limit_conn_zone+limit_conn控制单 IP 并发连接数(如最多 50 个); - 用
limit_req_zone+limit_req控制请求频率(如每秒 20 次,允许突发 5 次); - 建议开启
limit_req_log_level notice记录触发限流的请求,便于后续分析异常模式; - 避免“一刀切”,对登录、搜索等正常高频操作可单独设置宽松策略或白名单。


















