盗链的概念
盗链(Hotlinking)是指其他网站在未经授权的情况下直接链接(引用)您网站上的资源,如图片、视频、音频等。通过盗链,其他网站可以直接使用您的资源,消耗您的带宽和服务器资源,并可能导致您的网站访问速度变慢或产生额外的费用
简单来说就是别人的网站用着你服务器上的东西,盗链者减轻了服务器压力,使其网站用户直接访问受害者服务器资源,受害者类似于白打工类型
防盗链基础配置
防盗链配置的原理:Nginx 用于实现防盗链功能的模块为 refer 模块,其依据的原理是: 如果网站盗用了你的图片,那么用户在点击或者查看这个盗链内容时,发送 http 请求的头部中的 referer 字段将为该盗版网站的 url。这样我们通过获取这个头部信息,知道 http 发起请求的页面,然后判断这个地址是否是我们的合法页面,不是则判断为盗链。‘
打开Nginx的配置文件(通常是 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf)主配置文件或者子配置文件
server块或者location块内添加
location / {
valid_referers none blocked example.com *.example.com;
if ($invalid_referer) {
return 403;
}
}
参数名 | 标识含义 |
---|---|
valid_referers | 指定允许的引用来源列表 |
none | 不允许任何引用来源。 |
blocked | 拒绝所有未在列表中定义的引用来源。–不加的话不会拒绝,是直接忽略 |
URl域名 | 允许某一个网页来访问 |
*.域名后缀 | 允许某一个网页指定的域名后缀访问 |
如果不加none空的话,那么除了指定的网站,其他用户将都无法正常访问
防盗链高级设置
基础的防盗链措施既然是根据refer来判断的,那么盗用者自然也可以通过仿造refer去盗链,这样就轻而易举的骗过了基础防盗链配置
在Nginx中还有高级的防盗方式:基于secure_link模块防盗,该模块能够检查请求链接的权限以及是否过期,多用于下载服务器防盗链。这个模块默认未编译进 Nginx,需要在源码编译时候使用 --with-secure_link_module 添加。
所以强烈建议还是yum安装吧,通过编译安装的,如果你后期想增加新的模块,需要整个服务全部重新编译,前提备份好配置和数据,太麻烦了说是
// 可以查看详细的编译选项和模块信息
Ningx -V
如果没有此模块,则需要全部编译,yum安装的可以忽略以下,默认就是开启状态
// 编译安装预编译
./configure --with-http_referer_module
//随后编译安装
make & make install
// An highlighted block
location ~* .(gif|jpg|png|swf|flv|mp4)$ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
# 空字符串,校验不通过
if ($secure_link = "") {
return 403;
}
# 时间过期
if ($secure_link = "0") {
return 410 "URL过期,请重新生成";
}
root /root/test;
}
详细的使用说明可以先看一下其他大佬文章:
https://blog.csdn.net/leiwuhen92/article/details/131210848