Nginx防盗链
1)修改vhost/blog.moonsbird.com.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
valid_referers none blocked *.moonsbird.com moonsbird.com;
if ($invalid_referer) {
#rewrite ^/ http://blog.moonsbird.com;
return 403;
}
expires 30d;
access_log off;
}
2)真正意义上的防盗链
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
valid_referers *.moonsbird.com moonsbird.com;
if ($invalid_referer) {
#rewrite ^/ http://blog.moonsbird.com;
return 403;
}
expires 30d;
access_log off;
}
3)两者的区在于有没有 none blocked
第一种方法有,在浏览器上输入图片地址可访问
第二种方法没有, 在浏览器上不可访问
- valid_referers语法:valid_referers [none|blocked|server_names] …
默认值:no
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1。
可以使用这个指令来实现防盗链功能,如果valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1(参照前例)。
参数可以使如下形式:- none意为不存在的Referer头
- blocked意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
- server_names为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
变量$invalid_referer不是nginx的系统变量,是http协议中的

浙公网安备 33010602011771号