Nginx防盗链

盗链的概念

盗链(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值