«

Nginx访问控制IP白名单配置限制来源

时间:2026-11-14 07:17     作者:emer     分类: Nginx


前言

后台、管理接口、测试环境只允许固定 IP 访问,其他来源一律拒绝。Nginx 的 allow/deny 指令可以按 IP 段做白名单,配合 403 返回。本文讲解 location 级白名单、整站白名单、拒绝其余所有 IP、多 IP 与网段写法,以及反代时取真实 IP 的注意事项。

操作步骤

1. 只允许指定 IP 访问后台

location /admin/ {
    allow 1.2.3.4;
    allow 10.0.0.0/8;
    deny all;
    proxy_pass http://backend;
}

allow 写可信来源,deny all 拒绝其余全部。

2. 整站白名单(内网开放)

server {
    listen 80;
    allow 192.168.1.0/24;
    allow 1.2.3.4;
    deny all;
}

3. 放行多个 IP 和网段

allow 1.1.1.1;
allow 2.2.2.0/24;
allow 3.3.3.3;
deny all;

4. 校验并重载

nginx -t
nginx -s reload

5. 测试访问控制

curl -I https://域名/admin/

不在白名单的 IP 返回 403,白名单 IP 正常进入。

6. 反代场景取真实 IP

经过 CDN 或反代时,$remote_addr 是代理 IP,需先配 real_ip 模块还原访客 IP,否则白名单全部失效。

常见坑

  1. 顺序错误:deny all 写在 allow 前面,所有 IP 都被拒。
  2. 经过 CDN 直接 deny all,真实访客全被挡。
  3. 只对 location 配白名单,其他路径仍可访问。
  4. 办公 IP 是动态的,白名单要定期更新。
  5. 网段写法错误,/24 写成 255.255.255 无效。
  6. 同时用了云安全组,两层规则要保持一致。
  7. 白名单不能替代登录鉴权,它只是网络层限制。

总结

IP 白名单用 allow 列可信来源、deny all 兜底,可放 server 整站或 location 单路径。反代必须先还原真实 IP。白名单适合后台、测试、内网接口,仍要配合账号登录,不能把它当成唯一防线。

遇到问题加QQ23979811 协助处理

标签: Nginx 安全 IP白名单 访问控制