宝塔面板Nginx防盗链,保护图片资源

当你的网站图片被其他站点直接引用时,流量和带宽会被白白消耗。
本文面向零基础用户,介绍如何在宝塔面板中通过修改Nginx配置实现防盗链,保护图片资源不被盗用。
操作前请确保已安装宝塔面板和Nginx,并备份网站配置。

配置前的准备工作

登录宝塔面板,进入“网站”列表,找到需要防盗链的站点,点击“设置”。
在“配置文件”中可以看到当前Nginx配置。
建议先复制一份配置内容到本地,或使用宝塔的“备份”功能,避免误操作导致网站无法访问。

防盗链的核心是检查HTTP请求头中的Referer字段。Referer表示请求来源页面的地址。
如果来源不是自己的域名,就拒绝提供图片。
你需要提前整理允许访问的域名列表,例如:

  • 主域名:www.example.com
  • 不带www的域名:example.com
  • 如果使用了CDN,还需加入CDN回源域名

修改Nginx配置文件

在宝塔面板中,点击站点设置里的“配置文件”,找到server块内部,在location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$这类图片规则之前或之后添加防盗链规则。
如果不存在该规则,可以手动添加。

以下是一个可用的配置示例,请将yourdomain.com替换为你的实际域名:

location ~* \.(gif|jpg|jpeg|png|bmp|webp|swf)$ {
    valid_referers none blocked server_names *.yourdomain.com yourdomain.com;
    if ($invalid_referer) {
        return 403;
    }
    expires 30d;
    access_log off;
}

关键点说明:

  • valid_referers定义允许的来源。none表示允许没有Referer的请求(例如用户直接输入图片URL),blocked表示允许Referer被防火墙或代理隐藏的请求。
  • server_names表示允许当前server块中server_name指令定义的域名。
  • *.yourdomain.comyourdomain.com显式允许你的域名及其子域名。
  • 如果$invalid_referer为真,则返回403禁止访问。你也可以返回一个替代图片,例如rewrite ^ /anti-hotlink.png break;

修改完成后,点击“保存”,宝塔会自动检查配置并重载Nginx。
如果报错,请根据提示检查语法。

避坑指南与常见问题

1. 图片显示403错误

如果自己的网站图片无法显示,通常是白名单遗漏了域名。
检查valid_referers是否包含了不带www的域名和子域名。
如果使用了CDN,确保将CDN的回源域名加入白名单。

2. 直接访问图片URL被禁止

如果希望允许用户直接在浏览器打开图片,保留none关键字。
如果不需要,可以移除none,但这样会导致部分直接访问失效。

3. 配置后网站样式错乱

防盗链规则可能匹配了CSS或JS文件。
检查正则表达式是否仅针对图片后缀,避免误伤其他静态资源。

4. 宝塔面板中修改无效

确认修改的是正确的站点配置文件,并且保存后Nginx已重载。
可以在宝塔“软件商店”中重启Nginx,或通过SSH执行nginx -t测试配置,然后nginx -s reload

5. 需要允许搜索引擎收录图片

如果希望百度、Google等搜索引擎能显示图片,可以将常见搜索引擎域名加入白名单,例如*.baidu.com*.google.com,但需注意这也会允许这些搜索引擎的图片代理。

验证防盗链是否生效

配置完成后,可以通过以下方法验证:

  • 在其他网站或本地HTML文件中引用你的图片URL,打开页面查看图片是否显示。如果显示403或替换图,说明防盗链生效。
  • 使用curl命令模拟请求:curl -I -e "http://otherdomain.com" http://yourdomain.com/image.jpg,观察返回状态码是否为403。
  • 直接访问图片URL,应该能正常显示(如果允许none)。

如果验证时发现异常,请返回检查配置,并确认Nginx错误日志(宝塔面板“日志”中可查看)是否有相关记录。

用户常见疑问

问:防盗链配置会影响网站速度吗?

答:Nginx处理Referer检查非常快,对性能影响极小。

问:除了图片,还能保护其他文件吗?

答:可以,修改正则表达式匹配其他后缀即可,例如视频、PDF等。

问:如果网站使用了HTTPS,Referer会正常传递吗?

答:HTTPS页面引用HTTPS资源时,Referer会正常传递;
HTTPS引用HTTP资源时,浏览器可能不发送Referer。

问:宝塔面板有没有一键防盗链功能?

答:宝塔面板本身没有专门的防盗链开关,但可以通过配置文件实现,本文提供的方法适用于大多数场景。

按照以上步骤操作后,你的图片资源将得到有效保护。
如果遇到问题,优先检查白名单和Nginx错误日志。

分享到:
上一篇
宝塔面板清理磁盘,垃圾日志缓存一键清理:宝塔面板磁盘清理
下一篇
Nginx配置网站限速,限制单IP下载速度
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意