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的值是否是其中的某个`

在这里插入图片描述
重启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为错误图片的地址
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐