使用Nginx自带的Referer模块即可,下面是一个例子。将这段代码加入你想要防盗链的Server段中。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers www.junorz.com junorz.com;
if ($invalid_referer) {
return 403;
}
}
关于一些参数的说明
语法:valid_referers [none|blocked|server_names|Strings] …
默认值:-
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1。
可以使用这个指令来实现防盗链功能,如果在一个请求中,Referer头的值没有在valid_referers列表中,$invalid_referer将被设置为1。
参数可以使如下形式:
none 意为不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked 意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
参考:
http://nginx.org/en/docs/http/ngx_http_referer_module.html
http://467754239.blog.51cto.com/4878013/1440464