网站防盗链配置教程:Nginx与宝塔面板实操指南
什么时候需要开启网站防盗链
如果你的网站图片、视频、CSS或JS文件被其他站点直接引用加载,不仅消耗你的服务器带宽,还可能导致页面加载变慢、用户体验下降。
开启网站防盗链后,只有允许的来源(比如你自己的域名)才能加载这些资源,其他站点直接访问会被拒绝。
准备工作:检查服务器环境
在动手之前,先确认你的网站运行环境:
- 如果使用 Nginx(常见于独立服务器或面板中转模式),需要找到站点配置文件。
- 如果使用 宝塔面板(Linux版),登录后台后进入“网站”菜单。
- 如果使用 Apache,方法类似但指令不同,本文以 Nginx 和宝塔为例。
另外,建议提前备份站点配置文件,防止写错导致网站无法访问。
方案一:Nginx 手工配置 Referer 验证
这是最传统的方法,通过校验 HTTP 头中的 Referer 字段来判断是否允许访问。
- 找到你网站的 Nginx 配置文件,通常在
/etc/nginx/conf.d/或/usr/local/nginx/conf/vhost/下。 - 在
server块或location块内,添加以下规则(以保护图片为例):
location ~ .*\.(jpg|jpeg|png|gif|bmp|swf|webp)$ {
valid_referers none blocked server_names *.example.com example.com;
if ($invalid_referer) {
return 403;
}
}
参数说明:
valid_referers指定允许的 Referer 来源。none表示直接访问(无 Referer)也允许,blocked表示带空白 Referer 的请求允许,server_names表示本服务器域名,*.example.com表示泛域名。$invalid_referer为 Nginx 内置变量,当请求的 Referer 不在允许列表内时返回 true。
- 保存文件后测试配置并重载:
nginx -t
systemctl reload nginx # 或 service nginx reload
确认无报错。
你可以将文件后缀替换成你实际需要的资源类型。
方案二:宝塔面板一键开启防盗链
宝塔面板为新手提供了图形化操作,无需手写配置。
- 登录宝塔面板,点击左侧“网站”。
- 找到你要设置防盗链的站点,点击右侧“设置”。
- 在弹出的窗口中,点击“防盗链”标签(如果找不到,先检查面板版本,较新版可能在“安全”分类里)。
- 开启“防盗链”开关,然后在“允许域名”框中填入你的网站域名,比如
example.com和*.example.com,每行一个。 - 设置“允许空Referer”选项:如果希望允许用户在浏览器直接打开资源(比如朋友复制链接到地址栏),建议开启;如果希望完全限制,则关闭。
- 点击“保存”按钮。宝塔会自动修改 Nginx 配置并重载。
完成后你可以立即生效。
防盗链配置的三大常见坑
坑1:忘记允许空白 Referer
部分用户开启后,发现自己的网站图片显示正常,但直接在浏览器地址栏输入图片地址却被拦截(返回403)。
正常现象,因为地址栏请求不带 Referer。
如果你希望允许这种直接访问,在 Nginx 的 valid_referers 或宝塔面板中记得勾选“允许空Referer”。
坑2:防盗链规则写错导致站内资源被拦
例如,你的网站有子域名 images.example.com,但只写了 example.com,那么 images.example.com 加载的图片可能被判定为盗链。
建议泛域名写法 *.example.com。
坑3:CDN 或代理后 Referer 丢失
如果你的网站使用了 CDN 或反向代理(比如 Cloudflare、又拍云),原始请求的 Referer 可能被修改或丢失。
这时需要配置 CDN 回源时携带原 Referer,或者在防盗链规则中加上 CDN 节点的域名。
具体参考你 CDN 厂商的文档。
如何测试防盗链是否生效
- 浏览器直接访问:复制一张你网站图片的链接,粘贴到新建的无痕窗口地址栏。如果配置正确且你关闭了“允许空Referer”,应该返回403;如果开启了允许空Referer,则图片能正常显示。
- 模拟盗链:在其他网站(比如随便搭建一个临时HTML页面)里引用你的图片,访问那个页面,观察图片是否显示。如果显示则防盗链未生效;如果显示为断裂图片或403错误,说明配置成功。
- 命令行测试(推荐):使用 curl 命令模拟不同 Referer:
# 模拟正常来源
curl -I -e "https://www.example.com/page" "https://www.yoursite.com/image.jpg"
# 模拟非法来源
curl -I -e "https://www.hacker.com" "https://www.yoursite.com/image.jpg"
正常来源应该返回200,非法来源返回403(或根据你配置的状态码)。
结语
以上内容覆盖了 网站防盗链 的两种主流实现方法和避坑要点。
无论你是新手还是有一定经验的站长,都可以按照步骤配置并验证。
如果你遇到问题,先检查 Referer 放行列表是否完整,其次确认缓存或代理影响。
后续还可延伸学习基于 Token 或签名认证的更严格防盗链方案。
建议将本文收藏,需要时快速查阅。
如果你正在准备从零开始保护网站资源,建议先按本教程操作一遍,再根据实际访问表现做微调。