目录

  • 1. 什么是资源盗链
  • 2. Nginx防盗链的实现原理
  • 3. 针对目录进行防盗链
  • 参考文献

原文地址:https://program-park.github.io/2022/04/21/nginx_10/

1. 什么是资源盗链

  资源盗链指的是此内容不在自己服务器上,而是通过技术手段,绕过别人的限制将别人的内容放到自己页面上最终展示给用户,以此来盗取大网站的空间和流量。简而言之就是用别人的东西成就自己的网站。
  效果演示,下面是京东和百度的两张图片:
  京东:https://img14.360buyimg.com/n7/jfs/t1/101062/37/2153/254169/5dcbd410E6d10ba22/4ddbd212be225fcd.jpg
  百度:https://pics7.baidu.com/feed/cf1b9d16fdfaaf516f7e2011a7cda1e8f11f7a1a.jpeg?token=551979a23a0995e5e5279b8fa1a48b34&s=BD385394D2E963072FD48543030030BB
  引用两张图片:


  效果:


  可以看出,百度的图片添加了防止盗链的功能,而京东的图片可以直接使用。

2. Nginx防盗链的实现原理

  讲防盗链的原理之前,我们得先了解一个 HTTP 的头信息 Referer,当浏览器向 Web 服务器发送请求的时候,一般都会带上 Referer,来告诉浏览器该网页是从哪个页面链接过来的。


  后台服务器可以根据获取到的这个 Referer 信息来判断是否为自己信任的网站地址,如果是则放行继续访问,如果不是则可以返回 403(服务端拒绝访问)的状态信息。
  Nginx 防盗链的具体实现:
  valid_referers: Nginx 会通就过查看 referer 自动和 valid_referers 后面的内容进行匹配,如果匹配到了就将$invalid_referer变量置 0,如果没有匹配到,则将$invalid_referer变量置为 1,匹配的过程中不区分大小写。

语法 valid_referers none|blocked|server_names|string…
默认值 -
位置 server、location
  • none:如果 Header 中的 Referer 为空,允许访问;
  • blocked:在 Header 中的 Referer 不为空,但是该值被防火墙或代理进行伪装过,如不带http://https://等协议头的资源允许访问;
  • server_names:指定具体的域名或者 IP;
  • string:可以支持正则表达式和*的字符串。如果是正则表达式,需要以~开头表示,例如:
location ~*\.(png|jpg|gif){valid_referers none blocked www.baidu.com 10.7.2.205 *.example.com example.* www.example.org ~\.google\.;if ($invalid_referer){return 403;}root /usr/local/nginx/html;
}

  那么现在问题来了,图片有很多,该如何批量进行防盗链?

3. 针对目录进行防盗链

  配置如下:

location /images {valid_referers none blocked www.baidu.com 10.7.2.205 *.example.com example.* www.example.org ~\.google\.;if ($invalid_referer){return 403;}root /usr/local/nginx/html;
}

  这样我们可以对一个目录下的所有资源进行翻到了操作。
  还有一个问题:Referer 的限制比较粗,比如随意加一个 Referer,上面的方式是无法进行限制的。那么这个问题改如何解决?
  此处我们需要用到 Nginx 的第三方模块ngx_http_accesskey_module,第三方模块如何实现盗链,如何在 Nginx 中使用第三方模块的功能,这些我们在后面的 Nginx 的模块篇再进行详细的讲解。

参考文献

  【1】https://www.bilibili.com/video/BV1ov41187bq?p=64

Nginx从入门到入坟(九)- Nginx静态资源如何防盗链相关推荐

  1. Nginx从入门到入坟(十三)- 负载均衡的原理及优化

    目录 1. 负载均衡概述 2. 负载均衡的原理及处理流程 2.1 负载均衡的作用 2.2 负载均衡常用的处理方式 2.2.1 用户手动选择 2.2.2 DNS轮询方式 2.2.3 四/七层负载均衡 3 ...

  2. 从入门到入坟搭建FreeNAS服务器并配置NextCloud_NAS存储

    从入门到入坟搭建FreeNAS服务器并配置NextCloud 2021-01-06 23:15:38 173点赞 963收藏 100评论 创作立场声明:本文所有商品皆自费购入,第一次发表文章,若有不当 ...

  3. 【教程汇总+持续更新】Unity游戏开发从入门到入坟

    新的一年,本该在年前整理的年终总结被拖到了年后开工.去年大量时间投入在Catlike教程的翻译上,截止目前位置,教程的进度已经完全追平原作者. 去年还有一部分是断断续续的更新SLG实战教程,但遗憾的是 ...

  4. nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案

    nginx系列友情链接: nginx高性能WEB服务器系列之一简介及安装 https://www.cnblogs.com/maxtgood/p/9597596.html nginx高性能WEB服务器系 ...

  5. canvas 从入门到入坟

    文章目录 canvas 从入门到入坟 1. 概述 2. 使用场景 2.1 图表的绘制 2.2 canvas游戏 2.3 说明与作用 3. Canvas 入门 3.1 完成目标 3.2 初始化 3.3 ...

  6. FHQ-Treap(非旋treap/平衡树)——从入门到入坟

    作者:hsez_yyh 链接: FHQ-Treap--从入门到入坟_hsez_yyh的博客-CSDN博客 来源:湖北省黄石二中信息竞赛组        著作权归作者所有.商业转载请联系作者获得授权,非 ...

  7. 深聊MySQL,从入门到入坟之:MySQL竟然也有后悔药!!!

    MySQL后悔药,防止看铁窗 1.引言 2.5种后悔药 2.1 limit 2.2 先测试后生产 2.3 删除前,先备份 2.4 删除前,先查询 2.5 修改时, begin+commit 3. 总结 ...

  8. 初阶指针---从入门到入坟

    今天我们来见识一下c语言里让万千少年少女从入门到入坟的一道大门槛--指针 目录 1.指针是什么? 2.指针和指针类型 3.野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 1. ...

  9. 将Vue项目部署在Nginx,解决前端路由、反向代理和静态资源问题

    将Vue项目部署在Nginx,解决前端路由.反向代理和静态资源问题 需求: 一台服务器,Linux 安装了Nginx 使用Vue脚手架编写的Vue项目 第一步:将Vue项目打包,然后将生成的dist文 ...

  10. springboot入门到入坟

    课程目录 导读:课程概览 第01课:Spring Boot开发环境搭建和项目启动 第02课:Spring Boot返回Json数据及数据封装 第03课:Spring Boot使用slf4j进行日志记录 ...

最新文章

  1. python注释#、Ctrl+/
  2. 67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?
  3. Hystrix 熔断器02 —— hystrix 案例之高并发测试
  4. linux程序设计---序
  5. zblog php版调用代码,zblogphp调用指定单篇文章代码升级版
  6. 大数计算器概念c语言,用C语言求两个超大整数的和
  7. 计算机网络之网络概述:4、分层结构(协议、接口、服务)
  8. php image 转 data uri 图片 (Image Data URIs with PHP)
  9. 9203精英挑战赛注意事宜 一
  10. layui表格固定列覆盖滚动条导致错位
  11. C#调用python深度学习项目排坑
  12. 电脑端输入法的一些设置
  13. Eel初次使用示例(使用Scala读取Hive表)
  14. 无法登录QQ和wegame,连接超时
  15. 按键精灵万能写法轻松驾驭图色脚本
  16. matlab butter stop,Matlab butter函数设计滤波器
  17. 字节三面:对于 Spring 你了解多少?如果你会了这 150 道题 ,吊打面试官岂不是洒洒水
  18. Buck的振铃实验与分析
  19. 晋江一中2021高考成绩查询,2019高考成绩出炉,晋江第一名揭晓!
  20. 英语面试攻略!附带英语自我介绍模板

热门文章

  1. centos7 python3 爬虫登陆邮箱_使用爬虫爬取超星学习通的作业时间并且通过邮件提醒!...
  2. 斗地主Java课程设计_Java课程设计---web版斗地主
  3. 最简单的dubbo教程-快速入门
  4. 原生 js 实现弹窗
  5. 原生JavaScript开发高级课程 |智能S
  6. 极域电子教室软件 v4.0 2015 豪华版忘记密码怎么办
  7. android 滤镜录制,Android Camera 实时滤镜
  8. decimal.JS 快速入门
  9. 英语音标原来这么丰富,换个角度把欧洲语言作为一个体系
  10. 黑马程序员, html css javascript 前端笔记 pink老师教程