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防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! ...
随机推荐
- App测试理论简介
一.App测试常见关注点 1.App的功能测试 功能测试都是我们首要测试的,只有功能实现了才算符合上线发布的最低标准.我们需要检测产品功能是否已实现.产品功能是否符合设计要求.产品功能是否有重复.产品 ...
- JDK的安装与环境变量的配置
一.JDK的安装 1. JDK的下载地址 https://www.oracle.com/java/technologies/javase-downloads.html. 2. 当前最流行的是 ...
- k8s应用机密信息与配置管理(九)
secret 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以 ...
- 【答疑解惑】为什么你的 Charles 会抓包失败?
作为一名 Web 开发工程师,天天都会和网络打交道.Charles 作为一款网络抓包工具,几乎成了 Web 开发的标配. 本文是我深度使用 Charles 后总结而成,不同于其它介绍 Charles ...
- 滴滴开源AgileTC:敏捷测试用例管理平台
桔妹导读:AgileTC是一套敏捷的测试用例管理平台,支持测试用例管理.执行计划管理.进度计算.多人实时协同等能力,方便测试人员对用例进行管理和沉淀.产品以脑图方式编辑可快速上手,用例关联需求形成流 ...
- GEKCTF2020-web
GEKCTF [GKCTF2020]CheckIN97 <title>Check_In</title> <?php highlight_file(__FILE__); c ...
- Kubernetes K8S之存储Secret详解
K8S之存储Secret概述与类型说明,并详解常用Secret示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 ...
- 使用SSM框架实现Sql数据导出成Excel表
SSM框架实现SQL数据导出Excel 思路 首先在前端页面中添加一个导出功能的button,然后与后端controller进行交互. 接着在相应的controller中编写导出功能方法. 方法体: ...
- 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型
010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...
- 【漏洞复现】MSF添加ms17-010的exp脚本及攻击复现
原文地址:https://bbs.ichunqiu.com/thread-23115-1-1.html 本来今晚在准备复现最近的CVE-2017-11882,由于本人是小白一枚,不知道这么添加msf的 ...