企业内网协同办公系统需分层实施防盗链与ip白名单:防盗链(valid_referers)仅用于静态资源且不可信,白名单(allow/deny)基于真实客户端ip强制用于高敏接口;必须配置real_ip_header还原内网真实源ip,确保策略生效。

在企业内网协同办公系统中,防盗链和白名单访问需协同设计:既要防止资源被外链盗用,也要确保仅授权内网 IP 可访问关键接口与静态资源。这不是单靠 valid_referers 或单纯 allow 就能解决的,而是需分层控制、精准匹配真实来源。
明确防盗链与白名单的分工边界
防盗链(valid_referers)验证的是 HTTP 请求头中的 Referer 字段,它反映的是“用户从哪个页面发起请求”,但该字段极易伪造,**不能作为身份认证依据**;而白名单(allow/deny)基于真实客户端 IP,是网络层可信控制手段。二者应配合使用,而非互相替代:
- 对静态资源(如 /static/、/uploads/、/files/):主用防盗链 + 内网白名单双重校验
- 对管理后台或 API 接口(如 /admin/、/api/v1/):强制启用 IP 白名单,不依赖 Referer
- 所有规则必须作用于真实客户端 IP——若前端有反向代理或负载均衡,务必先配置
set_real_ip_from和real_ip_header
配置真实源 IP 还原(内网场景必备)
企业内网常见多层架构(如 Nginx → Nginx → 应用),默认 $remote_addr 是上一跳代理地址。需在 http 块顶部显式还原:
- 确认内网代理段(如 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12),并写入
set_real_ip_from - 指定可信转发头,通常为
X-Forwarded-For或X-Real-IP - 示例配置:
set_real_ip_from 192.168.0.0/16;
set_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
静态资源防盗链 + 内网白名单双控
以协同系统中上传的文档预览、头像图片等静态资源为例(路径为 /files/),配置如下:
- 只允许来自企业门户域名(如
portal.corp.local)、内部 OA 系统(oa.corp.local)及同域请求访问 - 同时限制仅内网 IP(如
192.168.10.0/24、172.16.5.0/24)可访问,拒绝公网及非授权内网段 - 配置示例(放在 server 或 location 块中):
# 防盗链:仅允许可信来源
valid_referers none blocked portal.corp.local oa.corp.local ~\.corp\.local$;
if ($invalid_referer) { return 403; }
# 白名单:仅限两个办公网段 + 本地调试
allow 192.168.10.0/24;
allow 172.16.5.0/24;
allow 127.0.0.1;
deny all;
# 后续 proxy_pass 或 root 指令保持不变
}
管理后台路径级强白名单(无 Referer 依赖)
针对 /admin/、/console/、/settings/ 等高敏路径,禁用 Referer 判断,仅靠 IP 白名单守门:
- 禁止任何公网 IP、DMZ 区、测试网段访问
- 允许运维网段(如 10.200.1.0/24)和管理员办公网段(192.168.10.0/24)
- 配置中不写
allow all,末尾必须加deny all保证兜底
allow 192.168.10.0/24;
allow 10.200.1.0/24;
deny all;
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}











