Nginx安全落地应按业务路径分四类防护:管理后台(IP白名单+基础认证+禁用高危方法)、API接口(限流+攻击特征过滤+请求体限制)、静态资源(Referer白名单+禁止敏感文件+关闭目录索引)、开放页面(隐藏版本号+连接限制+HTTPS强制跳转)。

直接按业务路径划分防护强度,是 Nginx 安全落地最务实的做法。核心思路是:管理后台、API 接口、静态资源、开放页面四类路径,各自匹配对应粒度的防护策略,不搞“一刀切”。
管理后台路径(如 /admin、/backend)
这类路径必须执行最高级别访问控制,兼顾身份鉴别与网络准入。
- 强制 IP 白名单:仅允许运维网段或办公出口 IP 访问,其他一律拒绝
location /admin {
allow 10.20.0.0/16;
allow 203.0.113.100;
deny all;
} - 叠加基础认证:避免仅靠 IP 防御失效,补充用户名密码校验
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd; - 禁用高危 HTTP 方法:只允许 GET、POST、HEAD,拒绝 PUT、DELETE、TRACE 等
if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; }
API 接口路径(如 /api/v1/、/graphql)
重点防暴力调用和滥刷,同时保留一定弹性,不影响正常业务流量。
- 启用细粒度限流:按 IP 建立独立限流区,速率 + 突发容量双控
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api/ {
limit_req zone=api burst=30 nodelay;
} - 拦截已知攻击特征:对 query string 和 User-Agent 做轻量级过滤
if ($query_string ~* "(union.*select|base64_decode|eval\()") { return 403; }
if ($http_user_agent ~* "(sqlmap|nikto|acunetix)") { return 403; } - 限制请求体大小:防止大 payload 触发后端解析异常或内存耗尽
client_max_body_size 2m;
静态资源路径(如 /static/、/uploads/)
以防盗链和防遍历为主,不引入复杂逻辑,保障性能与可用性。
- 开启 Referer 白名单:只允许自家域名引用图片、JS、CSS 等资源
location ~* \.(jpg|jpeg|png|gif|js|css|woff2?)$ {
valid_referers none blocked example.com *.example.com;
if ($invalid_referer) { return 403; }
} - 禁止访问隐藏文件和敏感后缀:
location ~ /\. { deny all; }
location ~* \.(bak|conf|env|log|sh|sql)$ { return 404; } - 关闭目录索引:防止自动列出 uploads/ 下的上传文件列表
location /uploads/ { autoindex off; }
开放页面路径(如 /、/about、/help)
防御重心转向基础加固与资源保护,避免成为扫描跳板。
- 全局基础防护生效:包括隐藏版本号、精简响应头、限制连接数等
server_tokens off;
more_clear_headers "Server" "X-Powered-By";
limit_conn_zone $binary_remote_addr zone=conn_ip:10m;
limit_conn conn_ip 50; - 设置合理超时:缩短空闲连接保持时间,减少资源占用
keepalive_timeout 30;
client_header_timeout 15;
client_body_timeout 15; - 启用 HTTPS 强制跳转:所有 HTTP 请求 301 重定向至 HTTPS
return 301 https://$host$request_uri;











