基于http_refer防盗链配置模块
Syntax:valid_referers none | blocked | server_names | string ...;
Default:——
Context:server,location
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
设置防盗链的作用是为了防止,视频、图片...防止被其他网站盗用
配置语句
location ~ .*\.(jpg|gif|png)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 4;
gzip_types text/plain application/javascript applicattion/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
valid_referers none blocked 192.168.96.135; # 允许跳转的ip
if ($invalid_referer) {
return 403;
}
root /opt/app/code/images;
}
one代表没有referer;blocded代表有referer但是被防火墙或者是代理给去除了。
首先当我输入我要打开的网址的时候,因为是直接输入的没有referer所以匹配了 valid_referers后面的none或者是blocked 所以invalid_referer值为0 所以不进行跳转. 当我是从这个网站里面的链接跳到该网站首页的时候 因为referer的值是肯定包含srever_names 所以匹配了server_names所以不进行跳转。 当我从搜素引擎进去的时候因为referer字段类似于www.google.com.hk/search 开始进行匹配 发现没有一个匹配,则此时会设置invalid_referer值为1 if语句成功执行,进行了跳转. 达到功能
测试
使用curl 命令
curl -e "http://192.168.96.188" -I http://192.168.96.188/test.png,报403错误
curl -e "http://192.168.96.135" -I http://192.168.96.188/test.png,可正常访问