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防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...
随机推荐
- 部署zabbix监控服务器,部署主动监控
1.1部署服务运行环境 LNMP#yum -y install gcc pcre-devel zlib-devel openssl-devel #tar -zxvf nginx-1.12.2.ta ...
- Win10更新后蓝牙出现故障的解决方法
昨天Win10自动更新后,我发现我的键盘突然就不管用了,检查了一下发现原来蓝牙没有打开,同时任务栏中的蓝牙图标也不见了. 不久之前,这样的情况已经出现过了一次,那次好像更新系统后就好了,但这次是系统更 ...
- shell字体颜色应用
输出特效格式控制: \033[0m 关闭所有属性 \033[1m 设置高亮度 \03[4m 下划线 \033[5m 闪烁 \033[7m 反显 \033[8m ...
- 令人困惑的strtotime
经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌… 这不, 刚 ...
- Proxy使用详解
文档:Proxy 基本使用就不赘述,看文档即可 通用 1.Proxy可以包装任何形式的对象:包括原生数组,函数,甚至另一个代理 2.代理实例中没有指定的handler,实际就是操作原对象target: ...
- 解决IDEA打包出现中文乱码的问题
这主要是maven编译时编码问题导致的. 解决办法: 1.在IDEA的File里面打开Settings. 2.找到Runner,在VM Options输入-DarchetypeCatalog=inte ...
- JVM七大垃圾回收器下篇G1(Garbage First)
G1回收器:区域化分代式 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First (G1)GC? 原因就在于应用程序所应对的业务越来越庞大.复杂,用户越来越多,没有GC就不能保 ...
- 踩坑了,JDK8中HashMap依然会死循环!
是否你听说过JDK8之后HashMap已经解决的扩容死循环的问题,虽然HashMap依然说线程不安全,但是不会造成服务器load飙升的问题. 然而事实并非如此.少年可曾了解一种红黑树成环的场景,=v= ...
- golang "%p"学习记录随笔
对于获取slice的指针地址, 通过unsafe.Pointer 和 "%p"占位符两种方式得到的地址是不同的 s := make([]int, 1) t.Log(unsafe.P ...
- 4.Kafka使用