• Nginx学习笔记11——防盗链与http的referer


    http的referer和盗链

    http协议中的referer,用来表示来源,当请求html页面时没有referer,但是因为html中引入了css、js、img等静态资源,这些静态资源都需要一个来源,所以referer就表示了这个来源。
    在这里插入图片描述
    在这里插入图片描述

    盗链就是当referer是其他站点通过代理、html中的引用都一些方法访问到我们这个站点的静态资源来生成的,域名不是我们自己的域名。我们可以利用referer来防止盗链,通过判断取到的referer是不是我们自己想要的域名,如果是就继续访问,否则进行拦截。

    防盗链基本配置与none

    目前四个虚拟机,CentOS7-1是Nginx服务器,CentOS7-2是Tomcat服务器,CentOS7-1代理了CentOS7-2
    在这里插入图片描述

    配置CentOS7-3代理CentOS7-1,也就是再配置另一台Nginx服务器代理现在的Nginx服务器,使用proxy_pass
    在这里插入图片描述
    访问CentOS7-3,也就是另一台Nginx服务器,它代理了CentOS7-1(Nginx),CentOS7-1(Nginx)也代理了CentOS7-2(Tomcat),所以可以正常访问
    在这里插入图片描述
    这时我们不想让css、js、img等静态资源暴露给除了nginx7-1服务器以外的其他服务器,修改nginx7-1的配置文件

    防盗链配置:valid_referers none | blocked | server_name | strings ...;
    - none:检测referer不存在的情况
    - blocked:检测referer的值被防火墙或者代理服务器删除或伪装的情况。这种情况该referer的值不以“http://”或"https://"开头
    - server_name,设置一个或多个合法的url,用来检测referer的值是否是其中的某个`
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    重启nginx,访问合法的referer(CentOS7-1),可以发现静态资源都可以加载出来
    在这里插入图片描述
    访问不合法的referer,可以发现静态资源无法访问,都会报403,防盗链成功
    在这里插入图片描述
    直接访问某张静态图片,就算没有referer,也是报403
    在这里插入图片描述
    如果想要在没有referer的情况下可以访问静态资源,使用none,修改配置文件
    在这里插入图片描述
    直接打开静态图片,发现没有referer也可以访问
    在这里插入图片描述

    使用curl测试防盗链

    yum install -y curl
    在这里插入图片描述
    使用curl测试:
    curl -I http://192.168.195.128/topimg/logo.png
    在这里插入图片描述

    带referer(使用某个地址访问资源):
    curl -e "http://baidu.com" -I http://192.168.195.128/topimg/logo.png
    在这里插入图片描述

    盗链资源返回错误页面或错误图片

    返回错误页面
    新建一个错误页面html
    在这里插入图片描述
    在这里插入图片描述
    修改配置文件,增加error_page
    在这里插入图片描述
    配置如果是不合法的referer,就返回错误页面
    在这里插入图片描述
    使用不合法的referer访问静态资源,报401,返回错误页面
    在这里插入图片描述
    返回错误图片
    准备一张错误图片,放到某一目录下
    在这里插入图片描述
    在这里插入图片描述
    修改配置文件,如果发现不合法的referer,就把所有不合法请求rewrite为错误图片的目录地址
    在这里插入图片描述
    访问不合法的referer,所有图片的地址都会被rewrite为错误图片的地址
    在这里插入图片描述

  • 相关阅读:
    Restful风格是“垃圾”?
    基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新闻资讯 的设计与实现
    Ascend训练,如何将算子强制转换为float32
    一条 SQL 更新语句如何执行的
    事务、定时任务、多线程
    【大型电商项目开发】分布式session原理,SpringBoot整合SpringSession-52
    Lumiprobe 点击化学丨非荧光炔烃:己酸STP酯
    形态学 - 细化
    软件设计模式系列之十一——装饰模式
    Docker基础:Docker安装及镜像加速配置
  • 原文地址:https://blog.csdn.net/weixin_46116099/article/details/125422258