一   基本铺垫

盗链的理解

①  什么是盗链

盗链就是'盗用'别的网站的'链接'1)'大佬'建一个网站,'提供下载'以提高自己知名度和吸引力,这样你就必须有'空间存储'那些供人们下载的资源2)'不劳而获者'也建立一个网站,也提供下载服务,自己'不买'网上存储空间3)而是'盗用你的下载地址',挂在我自己的网站上,并且最主要的是'未经过你同意',这就是盗链盗链: 通过在自己网站里面'引用别人的资源链接','盗用'人家的劳动和资源盗链影响: 对'别人'服务器的物理资源进行压榨,影响被盗链者的网站-->'流量在大佬侧产生'+++++++++++++++++'通俗理解(访问不是自己的资源)'+++++++++++++++++1)比如你在'盗链者网站'下载一个软件,你'点开连接地址'也就是URL2)你发现'它的地址'却是引用的'大佬网站'的下载地址,这就是盗链

Referer理解

1)HTTP 协议中有一个用来表示'页面或资源'来源的'请求头',这个请求头叫做 'Referer' 补充:Referer是表示请求是从'哪个网址'跳转过来的
​
2)'防盗链'功能基于'HTTP协议'的Referer机制,通过Referer'跟踪来源',对来源进行'识别和判断'

Referer的应用

②  经典的现象

在'网页'引用'站外'的图片

当'浏览器'向'Web服务器'发送请求的时候,'一般会带上Referer',告诉服务器我是'从哪个页面'链接过来的,'Server-->服务器'借此可以'获得'一些信息用于'处理'备注: 如果是直接在浏览器上输入地址,'回车进来',则'没有Refer头'Refer:代表网页的来源,也即'上一页的地址-->从哪跳转过来的?'重点:为什么'服务器知道'我们的图片是'从哪引用'的,也知道'客户'从那个'网站链接点击过来'的细节: Referer与'跨域'关联比较大

③  nginx防盗链的维度

二    http_refer模块

用到'ngx_http_referer_module'模块和'$invalid_referer'变量

①  valid_referers

注意事项

1)通过'浏览器直接'打开img的url,这时候是'没有referer的',如果'容许'这一类,那么配置valid_referers'可以包括none'2)如果'referer不为空',但是里面的内容被'防火墙或者代理服务器'删除了,'也容许'这一类的话,可以通过'配置blocked'来绕过

1)blocked 包含所有'不是以 http(s):// 开头'的referer请求头[包含 "referer:"]2)不支持'单独只配置' none 或 blocked

②   referer_hash_bucket_size  referer_hash_max_size

③  valid_referers

备注: 通过'invalid_referere'变量为'0'表示黑名单场景: 一般'if'指令进行判断

④  黑白名单

⑤  简单案例

location ~* \.(gif|jpg|png|swf|flv)$ {   需要'防盗链资源'的'文件类型'valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;  这是'可以盗链的域名或IP地址(白名单)',一般情况可以把google、baidu、sogou、soso等域名'放进来'允许他们来'使用这些资源'if ($invalid_referer) {  '判断有没有referer'这样设置能够防盗链,不断地'302(永久)重定向'很多次,可能会'加重服务器'的负担,所以'不建议'这么做,除非有单独的图片服务器支持#rewrite ^/ https://www.wzj.com/picture/images/403.jpg; #如果有人非法盗链资源,则返回一张'防盗链的图片'return 403; '暴力的方式-->直接返回403错误代码'}
}

⑥   nginx的案例

典型的允许: 只允许特定的'ip'进行跨域来'获取资源'-->'产生流量'++++++++++++++++'分割线'++++++++++++++++设计思路: 两个网站('A和B')、A尝试访问B的图片资源被禁止测试: 虚拟主机有这个'referer'头没有?

备注: 报错的原因是'语法错误'++++++++'分割线'++++++++
​
下面含义: 只允许'172.25.2.200'来盗取'jpg和png图片'

--> '测试1':直接通过'浏览器'访问资源  <--

304状态码或许'不应该认为是一种错误',而是对'客户端有缓存'情况下'服务端的一种响应'浏览器还是得为'每个资源'生成'一条'条件请求,并且'等到服务器返回'HTTP/304响应,'才能读取客户端缓存'来显示网页.

静态资源缓存  304讲解

--> '测试2':'跨域'跳转是否能获取资源 <--
'A' nginx服务器配置

'B' nginx服务器配置'防盗链'

http://nginx.wzj.com/tupian.html测试效果:图片'加载不出来'了

+++++++++  非法跳转过来的给其'友好提示'  +++++++++

说明: rewrite生效,也即'Referer'生效

需求:'查看'Referer'图片超链接'--> '点击图片跳转到百度'

说明: 由于'referer',在'172.25.2.200'发生了一次'rewrite',展示的图片'不是'我们需求的

⑦   curl测试

⑧   参考链接

链接1

链接2

链接3

1)HTTP Referer头信息是可以'通过程序来伪装生成'的2)所以通过Referer信息防盗链'并非100%可靠',但是它能够'限制'大部分的盗链3)防爬虫这些,都是'防君子不防小人'的

Nginx(七)防盗链相关推荐

  1. Nginx配置防盗链

    Nginx配置防盗链 进入Nginx配置文件: [root@LHQ vhosts]# vim test.conf server { listen 80; server_name www.test.co ...

  2. 配置Nginx的防盗链,实现网站资源防盗

    前言   在项目中,经常会有不想让本站点的静态资源被他人盗取访问的需求.比如网站中的图片,前端加载的一些js文件等.此时,就可以配置nginx的防盗链来实现网站资源的防盗. 当然,此方案的前提是前端资 ...

  3. LAMP架构之nginx:nginx重定向+防盗链

    LAMP架构之nginx:nginx重定向+防盗链 一.nginx重定向 1.防止域名恶意解析到服务器IP,rewrite(URL重定向) 2.重定向做全站加密 3.网站的整体迁移 二.nginx防盗 ...

  4. nginx 访问控制 防盗链

    访问控制功能分为基于用户的访问控制及基于IP的访问控制 基于用户的访问控制 [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf locat ...

  5. LNMP - Nginx配置防盗链

    配置防盗链的目的:当别的网站盗用了我们网站的图片,视频等文件资源,放到他们自己的网站上去,一方面这属于无耻的盗窃行为,另一方面在并发量很大的情况下势必会无端增加我们网站的流量,增加服务器的负载. 解决 ...

  6. Nginx配置——防盗链

    ## 编辑配置文件 [root@wy ~]# vim /usr/local/nginx/conf/vhosts/test.conf location ~ .*\.(gif|jpg|jpeg|png|b ...

  7. unity如何实现图片透视_如何用nginx实现防盗链?保护网站图片、视频。

    什么是防盗链? 有时候,当我们在网站上浏览图片时会遇到图片打不开,并看到提示:"403权限禁止".这可能是正在浏览的这个网站用到的图片在盗用别的网站图片,而被盗用的网站采用了防盗链 ...

  8. Nginx图片防盗链、缓存和压缩的示例

    一.图片防盗链 简单即是最好,最简单的方法是用ngx_http_referer_mmodule模块的valid_referers参数来构建,这也是最常见和最常用的方法: 1 2 3 4 5 6 7 8 ...

  9. nginx的防盗链,动静分离,缓存,负载均衡,反向代理

    1.防盗链有两种实现方式 第一种采用了URL重写模块 location ~.*\.(jpg|gif|png)$ {valid_referers none blocked *.demo.com demo ...

最新文章

  1. 清华优秀毕业生放弃留学上热搜!计算机系前10名中9人留校深造
  2. 深入探究Java中equals()和==的区别是什么
  3. 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
  4. labview如何进行串口通讯
  5. 怎样 获取 ios的系统版本
  6. 斯坦福CS231n项目实战(二):线性支持向量机SVM
  7. Java的新项目学成在线笔记-day14(四)
  8. Java连接Elasticsearch6.xxx CRUD篇二
  9. 苹果也开始打价格战了
  10. 2019年-vSphere 7之ESXi 7.0 RC部署指南(转载)
  11. Sublime Text关闭自动更新
  12. char装cstring_MFC中char*,string和CString之间的转换-阿里云开发者社区
  13. OpenGL超级宝典(第7版)之第八章基元处理
  14. echarts全国城市经纬坐标json文件
  15. 淘宝天猫评论爬取,简单的办法完成滑动验证
  16. 面包屑导航html页面,react怎么实现面包屑导航
  17. 冗余技术----线路冗余与生成树技术及其安全增强
  18. Tools - On Duty
  19. 数学建模-Lingo学习
  20. Linux 网络编程socket错误分析

热门文章

  1. IIS锁处理 webconfig overrideModeDefault=“Deny” overrideMode=“Deny” allowOverride=“false”
  2. java 队列占用内存大小_Java线程池队列吃的太饱,撑着了咋整?java 队列过大导致内存溢出...
  3. 相机标定和ORBSLAM2/VINS测试
  4. E1是什么(2M线)
  5. 无人直播如何操作?全套直播技术都在这里!
  6. ntp时间服务器 时间同步
  7. QTableWidget表格使用及美化
  8. 防火墙开启oracle端口号,在防火墙上开放Oracle服务端口的方法
  9. Android Messenger跨进程双向传递消息(可传递bundle)
  10. 代金券制作小程序秒代金券_小程序开发制作的秒杀活动担心亏本?引流到店怎么进行?...