小皮面板如何配置网站防盗链
照着做一遍,你就能在小皮面板上给自己的站点配上防盗链,让别人网站没法直接盗用你的图片、视频、CSS 等资源,同时不影响自己站点和搜索引擎正常调用。
第一步:确认站点的运行环境和配置文件位置
先搞清楚你的站点跑的是 Nginx 还是 Apache,因为两者的防盗链写法完全不同。登录小皮面板(本文以 Linux 版 v1.x 为例),左侧导航点「网站」,在站点列表里找到目标站点,看「类型」那一列:显示 Nginx、Apache 或 Nginx+Apache 组合。
Nginx 站点的配置文件通常在服务器上的这个路径:
/www/server/panel/vhost/nginx/你的域名.conf
Apache 站点则在:
/www/server/panel/vhost/apache/你的域名.conf
注意:改配置前先在面板左侧「文件」里把原配置文件复制一份备份,改坏了能立刻还原,不然站点 502 会很慌。
第二步:优先试用面板自带的防盗链开关
小皮面板对 Nginx 站点提供了图形化防盗链入口:网站 → 点站点右侧的「设置」→ 切到「防盗链」标签页。打开总开关后,界面里一般有三块内容:允许的域名(白名单,一行一个,填你自己的域名,如 www.example.com)、要保护的扩展名(勾选 jpg、png、gif、mp4、css、js 等)、以及是否允许空 Referer。
填完后点「保存」,面板会自动帮你把规则写进站点配置文件并重载 Nginx,这一步不用敲命令。如果你的面板版本里没有「防盗链」标签页,跳过这步,直接看第三步手写规则。
注意:「允许空 Referer」建议打开。用户在浏览器地址栏直接打开图片、或者从微信/QQ 里点开链接时,Referer 是空的,关掉这个选项会导致这些正常访问全被拦成 403。
第三步:手动写 Nginx 防盗链规则
如果面板没有图形入口,就在站点「设置」→「配置文件」里手动加规则(等价于直接编辑第一步那个 .conf 文件)。找到 server { } 块,在里面插入:
location ~* \.(gif|jpg|jpeg|png|webp|bmp|mp4|flv|css|js)$ {
valid_referers none blocked server_names
*.example.com example.com
*.baidu.com *.google.com *.bing.com;
if ($invalid_referer) {
return 403;
}
expires 7d;
}
含义拆开看:valid_referers 后面列的是白名单——none 表示允许没有 Referer 的请求,blocked 表示允许被防火墙等改写过 Referer 的请求,server_names 表示本站域名,后面几行是你自己的域名和常见搜索引擎域名。不在白名单里的来源访问这些后缀的文件,就会拿到 403。
改完保存,回到「网站」页面点该站点的「重载配置」,或者在终端执行:
/etc/init.d/nginx reload
注意:如果你的站点前面挂了 CDN(比如又拍云、阿里云 CDN),CDN 回源时 Referer 可能变成 CDN 自己的域名或者为空,记得把 CDN 提供的回源域名也加到白名单里,否则会出现「图片全裂」的事故。
第四步:验证防盗链是否真的生效
拿一张站点上的图片,用 curl 模拟「从别的网站跳过来」的请求:
curl -I -e "http://www.other-site.com" http://你的域名/uploads/test.jpg
返回 HTTP/1.1 403 Forbidden 说明拦截成功。再去掉 -e 参数跑一次(模拟直接访问),应该返回 200 OK。两个结果都符合预期,配置就算对了。
如果第一条仍然返回 200,检查三件事:规则是不是加在了正确的 server 块里、有没有执行重载、CDN 缓存有没有刷新。
小结
- 先确认站点是 Nginx 还是 Apache,Nginx 用
valid_referers,Apache 用 .htaccess 的RewriteCond %{HTTP_REFERER}。 - 面板有图形化「防盗链」入口的优先用图形入口,省事且不易写错语法。
- 白名单里必须放上自己的域名、
none、blocked,以及搜索引擎和 CDN 回源域名。 - 改配置前备份文件,改完必须重载 Nginx 才生效。
- 用
curl -I -e分别测「伪造来源」和「无来源」两种请求,确认拦截和放行都正常。
原文链接:https://www.gj0.com/thread-1199.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。