帝国 CMS‑Nginx 完整防盗链配置教程
时间:2026-08-10 10:52:29 来源:aliz.cn 作者:SKY 阅读:
一、防盗链原理
依靠请求头
Referer判断访问来源; 仅放行本站域名、空引荐、百度、搜狗等爬虫; 拦截其他外部网站直接加载图片、附件资源。帝国 CMS 所有上传附件默认存放目录:
/e/data/,防护重点为此文件夹。
二、Nginx 站点配置代码
打开网站对应的 nginx‑conf 配置,在 server {} 内部粘贴下面规则:
nginx
location ~* ^/e/data/(.*)\.(jpg|jpeg|png|gif|bmp|webp|zip|rar|7z|txt|js|css)$
{
valid_referers none blocked server_names
*.aliz.cn
baidu.com bing.com sogou.com so.com qq.com;
if ($invalid_referer)
{
# 返回一张防盗链占位图,或者直接返回403
return 403;
}
}
参数解释
none:允许直接地址访问、浏览器无痕模式(无 referer)blocked:允许引荐头被防火墙隐藏的访客server_names:代表当前本站域名- 后面追加各大搜索引擎域名,防止爬虫抓取图片失败
三、进阶优化:图片被盗链展示提示图
如果你不想直接返回 403 报错,可以设置盗链时输出自定义禁止盗链图片:
nginx
location ~* ^/e/data/(.*)\.(jpg|jpeg|png|gif|webp)$
{
valid_referers none blocked server_names *.aliz.cn baidu.com bing.com;
if ($invalid_referer){
rewrite ^/e/data/.*$ /images/no‑link.png redirect;
}
}
提前将
no‑link.png上传至网站根目录 images 文件夹。
四、常见踩坑以及解决办法
1、微信分享、QQ 预览图片变成空白
配置务必带上none参数,移动端客户端经常不会携带访问来源 Referer。2、后台编辑器图片加载失败
把你的全站域名全部写入 valid_referers,包含 www 和不带 www 域名。
3、需要放行 CDN 加速 IP 若是站点使用 CDN,防盗链建议改为 IP 白名单方式,不要依靠 Referer 校验。
五、Apache/IIS 简易防盗链备选
Apache .htaccess
apache
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !aliz.cn [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteRule ^e/data/ - [F]
IIS web.config 规则
xml
<rule name="图片防盗链" stopProcessing="true">
<match url="^e/data/(.*)\.(png|jpg|gif|webp)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_REFERER}" pattern="aliz.cn" negate="true" />
<add input="{HTTP_REFERER}" pattern="^$" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="403" subStatusCode="0" statusReason="禁止外部盗链" statusDescription="资源禁止外链引用" />
</rule>
六、长期安全建议
- 定期修改附件目录,高危下载资源增加随机文件名;
- 大型附件使用 PHP 临时授权访问,生成短期有效 URL;
- 开启 Nginx 日志,时常查看 403 盗链请求记录。
本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载
发表评论
共有0条评论