Nginx通过location块路径匹配与策略嵌套实现URL细粒度防护,支持白名单放行、高危路径拦截、敏感目录禁止访问、差异化限流/过滤/防盗链及IP来源控制,并可结合Naxsi对动态路径精准启用安全规则。

直接在 location 块中做路径匹配与策略嵌套,是 Nginx 实现 URL 路径级细粒度防护最高效、最可控的方式。不依赖外部模块,无需改业务代码,就能对不同路径施加差异化的访问控制、限流、过滤和响应策略。
按路径显式放行或拦截关键接口
避免“默认全开、事后封堵”的风险,采用白名单思维明确允许的路径,其余一律拒绝。
- 只允许调用已上线的公开 API:
location ~ ^/api/v1/(users|orders|products|search)$ { proxy_pass http://backend; } - 主动屏蔽高危调试路径:
location ~ ^/api/v1/(admin|debug|config|healthz|metrics) { return 403; } - 禁止访问敏感静态资源目录:
location ^~ /private/ { deny all; }
为不同路径配置独立安全策略
同一台 Nginx 可针对 /login、/api/、/static/ 等路径分别设置强度不同的防护,避免“一刀切”影响可用性。
- 登录接口强限流防爆破:
limit_req_zone $binary_remote_addr zone=login:10m rate=2r/s;
在location /login中启用:limit_req zone=login burst=3 nodelay; - API 接口启用轻量载荷过滤:
if ($query_string ~* "(union.*select|base64_decode|eval\()") { return 403; } - 静态资源路径专注防盗链与防遍历:
location ~* \.(js|css|png|jpg|woff2)$ { valid_referers none blocked example.com *.example.com; if ($invalid_referer) { return 403; } }
结合真实 IP 和可信来源做路径级访问控制
对管理类或内部接口路径(如 /internal-api/),必须限制来源,但要注意前端是否经过 CDN 或负载均衡。
- 内网+指定公网 IP 白名单:
location /internal-api/ { allow 10.0.0.0/8; allow 203.0.113.45; deny all; proxy_pass http://backend; } - 若前端有 CDN,需启用
real_ip模块还原真实客户端 IP:set_real_ip_from 10.0.0.0/8; real_ip_header X-Forwarded-For; - 注意
allow/deny是顺序匹配,第一条生效即终止判断。
用正则匹配实现动态路径精准防护(Naxsi 场景)
当需要对某类 URL 模式(如所有带 v2 版本号的接口)统一加规则时,基础 location 正则不够灵活,可引入 Naxsi 的高级匹配区域。
- 仅对
/api/v2/.*路径启用 SQL 注入检测:MainRule "str:'" "msg:SQLi in v2 API" "mz:$URL_X:^/api/v2/" "s:$SQL:4" id:2001; -
$URL_X支持正则,比location ~ /api/v2/更精准绑定检测范围,且不影响性能。 - 适用于需差异化防护多版本 API、灰度路径或租户前缀路径(如
/t/{id}/api)的场景。


















