Nginx通过include指令引入局域网白名单文件实现访问控制,需在server或location块中先include白名单配置(每行allow加末尾分号),再deny all,顺序不可颠倒,并确保路径权限正确、语法合法后重载生效。

Nginx 使用 include 引入局域网白名单列表,核心是把 IP 段或具体地址写在独立文件中,再通过 include 指令加载到 allow 指令里,配合 deny all 实现访问控制。
白名单列表文件准备
先创建一个纯文本文件(比如 /etc/nginx/conf.d/whitelist.conf),每行一个 allow 指令,支持 CIDR 格式:
allow 192.168.1.0/24; allow 10.0.0.5; allow 172.16.0.0/12;
注意:每行末尾必须有分号;文件路径需确保 Nginx 主进程有读取权限;不建议用注释(Nginx 不解析 # 注释)。
在 server 或 location 块中引入
在需要限制的 server 或 location 块内,按顺序写:
include /etc/nginx/conf.d/whitelist.conf;deny all;
顺序不能颠倒——必须先 allow 再 deny all,否则所有请求都会被拒绝。例如:
location /admin {
include /etc/nginx/conf.d/whitelist.conf;
deny all;
}
验证与重载配置
修改后务必检查语法并重载:
-
nginx -t—— 验证配置是否合法 -
nginx -s reload或systemctl reload nginx—— 生效新规则
如果出现 403,常见原因是:
– 白名单文件路径写错或权限不足
– allow 和 deny all 顺序反了
– 客户端真实 IP 被代理覆盖(如用了 CDN 或反向代理),此时需配合 real_ip 模块和 set_real_ip_from
进阶提示:动态更新白名单
白名单文件可被脚本定期生成或手动编辑,Nginx 不会自动感知变化,每次改完都要 reload。
若需高频更新,可考虑:
– 用 Lua 模块(如 OpenResty)做运行时 IP 判断
– 结合外部鉴权服务(如 auth_request)
– 用 map 指令预定义 IP 映射(适合固定少量 IP)


















