nginx安全:配置网站图片防盗链
一,为什么要做防盗链?
1,什么是盗链?
比如某人有一个A网站,
他不愿自己存储图片,(因为磁盘和带宽都有成本)
就在自己A网站的页面上直接插入B网站的图片,
从而为自己吸引流量,这就是盗链
2,为什么需要防盗链?
盗链静态文件会浪费网站的带宽及服务器的计算能力
这些都是网站运行的成本,
而且会影响网站合法用户的正常访问体验
所以我们要禁止盗链网站的图片和视频等静态文件
3,防盗链的原理:
根据请求头中referer属性得到网页来源,从而实现访问控制。
禁止非法使用本站的图片。
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,防盗链的例子
1,盗链的效果
假设盗链的网站是:www.lhdtest.com,被盗链的图片来自file.laoliu.net
它的index.html页面内容:
<html>
<head>
<title>
invalid images
</title>
</head>
<body>
welcome to www.lhdtest.com<br/>
<img src="http://file.laoliu.net/image/mid/1/348_8d72a999aa1d5800.gif" style="width:260px;" />
</body>
</html>
效果图:

2,防盗链的配置
我们在file.laoliu.net的虚拟主机上添加配置:
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {
valid_referers none blocked *.laoliu.net;
if ($invalid_referer){
return 403;
}
expires 30d;
}
各项指令的说明:
valid_referers: 用来定义合法访问的一个白名单
none: 通过浏览器直接打开图片的url,这种情况没有referer,
通常我们允许这种访问
blocked: referer不为空,但它的内容被防火墙或者代理服务器删除掉了
这种访问也可以允许
*.laoliu.net: 这个是被允许的域名,可以使用通配符
$invalid_referer: 是一个变量,用来判断valid_referers的结果是否非法
return 403: 返回403,403是HTTP 403 Forbidden的状态码,表示禁止访问
重启nginx生效后我们查看效果

说明:*.laoliu.net 这个域下面的页面仍然可以正常访问这些图片,
在浏览器地址栏直接输入地址也可以访问
3,遇到盗链时也可以跳转到一个提示当前被盗链的图片
例:
location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {
valid_referers none blocked *.laoliu.net;
if ($invalid_referer){
rewrite ^/ http://img4.sycdn.imooc.com/5eaa360d00017ef904930247.jpg;
}
expires 30d;
}
查看效果:

三,仅判断referer并不可靠
因为referer是可以伪造的,所以这里的防盗链还不是百分百的安全,
更严格的需求可以用nginx的第三方模块http_accesskey_module模块或lua脚本实现
四,查看nginx的版本
[root@centos8 conf.d]# /usr/local/soft/nginx-1.18.0/sbin/nginx -v
nginx version: nginx/1.18.0
nginx安全:配置网站图片防盗链的更多相关文章
- Nginx修改配置实现图片防盗链
一般情况下,防盗链是针对软件下载和图片的,由于一般的站点不提供资源下载,所以本文主要是针对图片的防盗链 1.如果对全站图片做防盗链,至少需要一个另外的域名存放指向图片.因为如果对全站图片做了防盗链,包 ...
- asp.net MVC 网站图片防盗链的几种方法
目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...
- ASP.NET 实现简单的图片防盗链介绍
在此,网站图片防盗链的方法是,通过获取Http请求头中的 Referer 标头与本网站域名比较,来判断用户是否来自本站跳转过来的 . 创建一个全局处理程序,用来处理images目录下的图片的直接请求: ...
- Nginx图片防盗链配置
如果我们自己网站内的图片资源被其它网站所盗用,这会增加自己网站的带宽资源,增加很多额外的消耗,而且会对我们系统的稳定性有影响,为了防止自己网站上的图片资源被其它网站所盗用,我们需要给自己的服务器配置防 ...
- Nginx中防盗链(下载防盗链和图片防盗链)操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- Nginx图片防盗链【实战】
访问我的博客 前言 博主目前在一家原创小说网站公司工作,由于站内的作品全部是原创,于是乎不可避免地会被一些盗版网站爬取盗版,对于防盗版一直没有很好的对策,让公司很是苦恼. 最近去一些盗版网站上搜索我们 ...
- 防盗链Nginx设置图片防盗链,设置无效的请仔细看红字
*******************************************************************切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片 ...
- lnmp/nginx系统真正有效的图片防盗链完整设置详解
http://www.it300.com/article-15345.html 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...
随机推荐
- 【机器学习】:Kmeans均值聚类算法原理(附带Python代码实现)
这个算法中文名为k均值聚类算法,首先我们在二维的特殊条件下讨论其实现的过程,方便大家理解. 第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给 ...
- oracle之二归档日志
归档日志 archivelog 5.1 归档和非归档的区别 1)归档会在日志切换时,备份历史日志,用于OLTP,可以进行冷备份和热备份,可以实现数据库完全恢复.不完全恢复(基于时间点) ...
- node进阶| 解决表单enctype="multipart/form-data" 时获取不到Input值的问题
今天在学习node踩到一个坑:form设置enctype="multipart/form-data"上传文件时,无法获取到表单其他input的值. 因为之前上传文件用的是 form ...
- vue2.5开发去哪儿了流程
初始化项目 在 src/assets 中添加样式初始化文件 reset.css ; border.css 本地引入取消延迟300毫秒的控件 cnpm i fastclick -S 在mian.js中引 ...
- java学习(九) —— java中的File文件操作及IO流概述
前言 流是干什么的:为了永久性的保存数据. IO流用来处理设备之间的数据传输(上传和下载文件) java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. java IO系统的学习, ...
- CSS实现图片圆角显示
问题描述 在自定义博客园侧边栏公告时,想增加博客头像,但图片默认显示成是方形的,不是很好看,想着改成圆角显示会漂亮些 解决方案 增加css样式 border-radius:25px; 上面的像素值根据 ...
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- 零基础小白必看篇:从0到1构建Python Web框架
造轮子是最好的一种学习方式,本文尝试从0开始造个Python Web框架的轮子,我称它为ToyWebF. 本文操作环境为:MacOS,文中涉及的命令,请根据自己的系统进行替换. ToyWebF的简单特 ...
- 走进shiro,构建安全的应用程序---shiro修仙序章
0. 写在前面 在最近的一个项目当中,我们基于Shiro实现我们系统的认证和授权.借此机会,写几篇博客,总结一下在本次实践当中遇到的问题,和较全面地学习一下Shiro的知识点, 1. 权限管理 权限管 ...
- 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例
019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...