nginx防盗链

官方地址:http://nginx.org/en/docs/http/ngx_http_referer_module.html

作用:

  • 防止资源被盗用。 防止非正常用户访问,
  • 占用网站资源,影响网站性能,造成影响正常用户访问

一、防盗链语法

句法:	valid_referers none | blocked | server_names | string ...;
默认:	-
内容:	server, location

指定“ Referer” 请求标头字段值,这些值将导致将嵌入式$invalid_referer变量设置为空字符串。否则,变量将设置为“ 1”。搜索匹配项不区分大小写,具体可以分析日志查看$http_referer返回的信息(访问源请求域名)


  • none:表示请求标头中缺少“Referer”字段;
  • blocked:表示“Referer”字段出现在请求标头中,但其值已被防火墙或代理服务器删除; 这些值是不以“http://”或“https://”开头的字符串;
  • server_names: 表示“Referer”请求头字段包含一个服务器名称;
  • string:表示定义服务器名称和可选的URI前缀。 服务器名称的开头或结尾可以包含“*”。 在检查期间,“Referer”字段中的服务器端口被忽略;

二、来源哈希表的存储桶大小

句法:	referer_hash_bucket_size size;
默认:	Referer_hash_bucket_size 64;
内容:	server, location
该指令出现在1.0.5版中。

设置有效引荐来源哈希表的存储桶大小

三、来源哈希表的最大值

句法:	referer_hash_max_size size;
默认:	referer_hash_max_size 2048;
内容:	server, location
该指令出现在1.0.5版中。

设置size有效引荐来源哈希表的最大值

特别提示:域名配置过多报错信息提示修改如下两个参数配置(server_names_hash_bucket_size、server_names_hash_max_size):文档查看 http://nginx.org/en/docs/hash.html

四、嵌入式变量

$invalid_referer

空字符串,如果“ Referer”请求标头字段值被视为有效,则为 “ 1”。

五、测试
1、实验机器两台

IP机器名称机器角色
192.168.11.186虚拟机窃取资源
101.200.157.73公有云提供资源

窃取图片url地址:http://101.200.157.73/img/login.47ae5af0.png
在这里插入图片描述

2、虚拟机访问资源index.html文件

vim index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">

/**********总体布局**************/
*{margin:0; padding:0; border:0;}
body{background-color:rgba(0,0,0,0.4);}
#content{
                position:relative;
                width:970px;
                height:550px;
                margin:20px auto;
                border:2px solid #FFF;
        }

#content:hover #tags img{
                        opacity:1;
                        }

/**********图片主要显示区**************/
#player{position:absolute; width:100%; height:100%; top:0; left:0;}
#player img{display:inline-block; position:absolute; float:left; width:970px; height:550px; top:0;}

/**********图片显示标签**************/
#tags{position:absolute; left:30px; bottom:20px;}
#tags img{display:inline-block; width:100px; height:61.8px; float:left; margin-right:10px; transition:1s; opacity:0.5;}
#tags img:hover{transform:scale(1.1); cursor:pointer;}
</style>
<script type="text/javascript" src="http://www.imooc.com/data/jquery-1.8.2.min.js"></script>
<script type="text/javascript">
    $(function(){
                var same=0;                                     //用于避免触碰到相同标签式是发生切换
                var interval=5000;                      //图片切换时间
                var timer;                                      //计时器

                /*********显示和隐藏图片************/
                $("#player img").hide();
                $("#player img").eq(0).show();
                $("#tags img").mouseover(function(){
                        var tags=$("#tags img").index(this);
                        if(same!=tags){
                                $("#player img").fadeOut();
                                $("#player img").eq(tags).fadeIn(500);
                        }
                        same=tags;
                })

                /*********自动播放图片***********/
                function autoplay(){
                        same++;
                        if(same>=$("#tags img").length){
                                same=0;
                        }
                        $("#player img").fadeOut();
                        $("#player img").eq(same).fadeIn(1);
                }

                /**********播放图片切换**************/
                function play(){
                        timer=setInterval(autoplay,interval);
                }

                /**********停止图片切换**************/
                function stop(){
                        clearInterval(timer);
                }

                /*****鼠标悬浮或移出时播放或停止切换图片***/
                $("#content").hover(function(){
                        stop();
                },
                function(){
                        play();
                })

                play();
        })
</script>
</head>

<body>
        <div id="content">
        <!--主显示区-->
        <div id="player">
            <img src="http://101.200.157.73/img/login.47ae5af0.png">
            <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1928423532,2042850473&fm=26&gp=0.jpg">
        </div>
        <!--显示标签-->
        <div id="tags">
            <img src="http://101.200.157.73/img/login.47ae5af0.png">   
            <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1928423532,2042850473&fm=26&gp=0.jpg">
        </div>
    </div>
</head>
<body>
</body>
</html>

3、虚拟机访问
在这里插入图片描述

4、公用云机器配置nginx文件
在这里插入图片描述

valid_referers none blocked 101.200.157.73   *.biadu.com  ~\.google\. ; # 101.200.157.73(server_name),可接多个域名
                if ($invalid_referer) {      #内置变量,Referer”请求标头字段值
                return 403;   #如果blocked未包含的域名请求访问返回403状态码
        }

5、重启公有云机器nginx服务

nginx -t && nginx  -s reload

6、再次刷新查看虚拟机页面
在这里插入图片描述

7、查看公有云是否可以正常访问到
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值