Nginx从入门到入坟(九)- Nginx静态资源如何防盗链
目录
- 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静态资源如何防盗链相关推荐
- Nginx从入门到入坟(十三)- 负载均衡的原理及优化
目录 1. 负载均衡概述 2. 负载均衡的原理及处理流程 2.1 负载均衡的作用 2.2 负载均衡常用的处理方式 2.2.1 用户手动选择 2.2.2 DNS轮询方式 2.2.3 四/七层负载均衡 3 ...
- 从入门到入坟搭建FreeNAS服务器并配置NextCloud_NAS存储
从入门到入坟搭建FreeNAS服务器并配置NextCloud 2021-01-06 23:15:38 173点赞 963收藏 100评论 创作立场声明:本文所有商品皆自费购入,第一次发表文章,若有不当 ...
- 【教程汇总+持续更新】Unity游戏开发从入门到入坟
新的一年,本该在年前整理的年终总结被拖到了年后开工.去年大量时间投入在Catlike教程的翻译上,截止目前位置,教程的进度已经完全追平原作者. 去年还有一部分是断断续续的更新SLG实战教程,但遗憾的是 ...
- nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
nginx系列友情链接: nginx高性能WEB服务器系列之一简介及安装 https://www.cnblogs.com/maxtgood/p/9597596.html nginx高性能WEB服务器系 ...
- canvas 从入门到入坟
文章目录 canvas 从入门到入坟 1. 概述 2. 使用场景 2.1 图表的绘制 2.2 canvas游戏 2.3 说明与作用 3. Canvas 入门 3.1 完成目标 3.2 初始化 3.3 ...
- FHQ-Treap(非旋treap/平衡树)——从入门到入坟
作者:hsez_yyh 链接: FHQ-Treap--从入门到入坟_hsez_yyh的博客-CSDN博客 来源:湖北省黄石二中信息竞赛组 著作权归作者所有.商业转载请联系作者获得授权,非 ...
- 深聊MySQL,从入门到入坟之:MySQL竟然也有后悔药!!!
MySQL后悔药,防止看铁窗 1.引言 2.5种后悔药 2.1 limit 2.2 先测试后生产 2.3 删除前,先备份 2.4 删除前,先查询 2.5 修改时, begin+commit 3. 总结 ...
- 初阶指针---从入门到入坟
今天我们来见识一下c语言里让万千少年少女从入门到入坟的一道大门槛--指针 目录 1.指针是什么? 2.指针和指针类型 3.野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 1. ...
- 将Vue项目部署在Nginx,解决前端路由、反向代理和静态资源问题
将Vue项目部署在Nginx,解决前端路由.反向代理和静态资源问题 需求: 一台服务器,Linux 安装了Nginx 使用Vue脚手架编写的Vue项目 第一步:将Vue项目打包,然后将生成的dist文 ...
- springboot入门到入坟
课程目录 导读:课程概览 第01课:Spring Boot开发环境搭建和项目启动 第02课:Spring Boot返回Json数据及数据封装 第03课:Spring Boot使用slf4j进行日志记录 ...
最新文章
- python注释#、Ctrl+/
- 67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?
- Hystrix 熔断器02 —— hystrix 案例之高并发测试
- linux程序设计---序
- zblog php版调用代码,zblogphp调用指定单篇文章代码升级版
- 大数计算器概念c语言,用C语言求两个超大整数的和
- 计算机网络之网络概述:4、分层结构(协议、接口、服务)
- php image 转 data uri 图片 (Image Data URIs with PHP)
- 9203精英挑战赛注意事宜 一
- layui表格固定列覆盖滚动条导致错位
- C#调用python深度学习项目排坑
- 电脑端输入法的一些设置
- Eel初次使用示例(使用Scala读取Hive表)
- 无法登录QQ和wegame,连接超时
- 按键精灵万能写法轻松驾驭图色脚本
- matlab butter stop,Matlab butter函数设计滤波器
- 字节三面:对于 Spring 你了解多少?如果你会了这 150 道题 ,吊打面试官岂不是洒洒水
- Buck的振铃实验与分析
- 晋江一中2021高考成绩查询,2019高考成绩出炉,晋江第一名揭晓!
- 英语面试攻略!附带英语自我介绍模板
热门文章
- centos7 python3 爬虫登陆邮箱_使用爬虫爬取超星学习通的作业时间并且通过邮件提醒!...
- 斗地主Java课程设计_Java课程设计---web版斗地主
- 最简单的dubbo教程-快速入门
- 原生 js 实现弹窗
- 原生JavaScript开发高级课程 |智能S
- 极域电子教室软件 v4.0 2015 豪华版忘记密码怎么办
- android 滤镜录制,Android Camera 实时滤镜
- decimal.JS 快速入门
- 英语音标原来这么丰富,换个角度把欧洲语言作为一个体系
- 黑马程序员, html css javascript 前端笔记 pink老师教程