需在宝塔面板中为Nginx配置防盗链白名单,方法包括:一、手动修改网站配置文件添加valid_referers规则;二、通过宝塔防火墙插件图形化设置;三、使用全局map模块统一管理可信Referer;四、用curl命令验证生效。

如果您希望限制外部网站直接引用您服务器上的静态资源,同时允许特定域名合法访问,则需要在宝塔面板中为Nginx配置防盗链白名单。以下是实现该功能的具体步骤:
一、通过网站配置文件手动添加白名单规则
该方法直接修改Nginx虚拟主机配置,在location块中嵌入valid_referers指令,明确指定被信任的来源域名,从而放行对应Referer请求。
1、登录宝塔面板,进入【网站】页面,找到目标站点,点击右侧【设置】按钮。
2、在弹出窗口中切换至【配置文件】选项卡,定位到server块内与静态资源匹配的location段(例如匹配.jpg、.png、.css等的location ~ .*\.(jpg|jpeg|png|gif|css|js)$ {)。
3、在该location块首行插入以下配置:
valid_referers none blocked yourdomain.com *.trusted-site.com;
4、在其后新增判断语句:
if ($invalid_referer) { return 403; }
5、保存配置文件,返回【网站】列表页,点击【重载配置】使Nginx重新加载规则。
二、使用宝塔防火墙插件启用Referer白名单策略
若已安装并启用宝塔免费版或专业版自带的【防火墙】插件,可通过图形化界面快速配置Referer白名单,避免手动编辑配置文件出错。
1、进入【安全】菜单,点击【宝塔防火墙】,确保服务状态为运行中。
2、在左侧导航栏选择【Web防护】→【防盗链设置】。
3、开启【开启防盗链】开关,并勾选【仅允许白名单域名访问】。
4、在【白名单域名】输入框中逐行填写允许的域名,例如:
api.example.com
admin.yoursite.net
5、点击【提交】按钮,防火墙将自动注入对应Nginx规则并重载服务。
三、利用Nginx全局map模块预定义可信Referer集合
该方式适用于多站点共用同一套白名单逻辑的场景,通过全局map变量统一管理,提升配置复用性与维护效率。
1、进入【软件商店】→【Nginx】→【设置】→【配置修改】,在http块顶部添加如下内容:
map $http_referer $allow_referer {
default 0;
~*https?://(www\.)?yourmaindomain\.com 1;
~*https?://sub\.trusted\.org 1;
}
2、返回各网站的【配置文件】,在对应location中替换原有valid_referers逻辑为:
if ($allow_referer = 0) { return 403; }
3、保存全部配置文件,执行【重载配置】操作。
四、验证白名单是否生效
完成任一配置后,需通过实际请求校验规则是否按预期拦截或放行,避免因正则书写错误或域名格式疏漏导致误判。
1、在本地终端执行curl命令模拟不同Referer头请求:
curl -H "Referer: https://yourdomain.com" https://yoursite.com/image.png
2、观察响应状态码,正常应返回200。
3、更换Referer为未授权域名:
curl -H "Referer: https://evil-hacker.site" https://yoursite.com/image.png
4、确认返回状态码为403,且响应体为空或含拒绝提示。










