Nginx后台白名单需在location块中按序配置allow与deny all,并还原真实IP;代理环境须设set_real_ip_from和real_ip_header;建议叠加auth_basic增强防护。

要让服务器后台只对特定运维网段开放,核心是用 Nginx 的 allow + deny all 组合做路径级白名单控制,位置、顺序、真实 IP 还原三者缺一不可。
必须写在 location 块里
规则只在 location(或 server、limit_except)中生效。比如后台路径是 /admin/、/manage/ 或 /api/v1/ops,就得把控制逻辑放进对应块:
location ^~ /admin/ {
allow 192.168.10.0/24;
allow 10.50.0.0/16;
deny all;
}写在 http 或 server 顶层会误锁全部流量;塞进 if 块里语法虽通,但完全不执行。
顺序不能颠倒:先放行,再兜底
Nginx 按行从上到下匹配,命中即停。所以:
- 每条
allow独占一行,支持多个网段或单 IP 并列 -
deny all;必须是该location内最后一条访问控制指令
漏掉deny all,等于没设防;写在allow前面,所有请求直接被拒。
代理环境下必须还原真实 IP
如果前面有 SLB、CDN 或反向代理,$remote_addr 是代理地址,不是员工真实 IP。需同步配置:
-
set_real_ip_from声明可信代理网段(如set_real_ip_from 10.0.0.0/8;) -
real_ip_header X-Forwarded-For;(或X-Real-IP,取决于上游传递的头) - 确保
ngx_http_realip_module已启用(默认内置)
配置后检查响应头或日志,确认$remote_addr显示的是内网真实 IP。
建议叠加基础认证增强防护
纯 IP 白名单适合内部网络,但若存在设备失陷风险,可加一层密码验证:
location ^~ /admin/ {
allow 192.168.10.0/24;
deny all;
auth_basic "Ops Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
}这样即使网段被绕过(如员工笔记本中毒),攻击者仍需密码才能进入。
不复杂但容易忽略


















