Nginx图片以目录防盗链

什么是资源盗链:

简单的来说就是不法网站未经许可,通过在自身的网站程序里非法调用其他网站的资源,然后在自己的网站上显示这些可以调用的资源,进而填充自己网站的效果,这一举动不仅浪费了调用资源网站的网络流量,还造成其他网站的带宽和服务器压力。

如果企业又cdn加速的话会造成流量无缘无故多出好几个G,会给公司带来很大的损失。

那么如何处理呢:

1.对IDC和CDN带宽进行监控报警

2.每天关注流量的变化,关注异常流量。

3.对访问日志进行分析,快速定位异常流量。

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。referer是目前网站图片,附件,html等常用的防盗链手段。

可以根据cookie进行防盗链。

 

Nginx web服务实现防盗链实战

1.利用referer并且针对扩展名rewirte重定向

location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|zip|rar)$ {

valid_referers none blocked *.etiantian.org etiantian.org;

if ($invalid_referer){

rewirte ^/ http://wtiantian.org/img/nolink.jpg;

}

}

 

根据expires来设置

根据虚拟主机来进行设置

server {

listen 80;

server_name www.etiantian.com;

root html/www;

index index.html index.htm;

access_log log/www.acces.log main;

location ~* ^.+\.(gif|jpg|png|wf|glv|rar|zip)$ {

if ($invailb_referer){

rewite ^/ http://bbs.etiantian.com/img/nolink.jpg

}

acces_log off;

root html/www;

expires 1d;

break;

}

}

 

利用referer,并且针对站点目录过滤返回错误码。

针对目录的方法是:

location /imager {

root /data/www/www;

valid_referer none blocked *.etiantian.org etiantian.org;

if {$lnvalid_referer}{

return 403;

}

}

在上面的防盗链中可以针对自己的需求自行设置。

 

下面呢就是对上述的配置进行讲解:

"jpg|jiig|png|flv|war|mp3"表示对这些为后缀名的进行资源防盗

"*.etiantian.org etiantian.org" 表示这个请求可以正常访问上面的文件资源

if{}中的内容意思就是如果地址不是上面指定的地址的话就跳转到rewirte制定的地址中去,也可以retrun直接返回错误403代码

return 403 直接返回403http返回码

rewirte ^/ http://www.etiantian.org/img/nolink.jpg 表示显示一张防盗链图片

access_log off; 关闭访问日志

expires 3d ; 浏览器缓存时间

也可以通过nginxHttpAccesskeyMoudle 实现防盗链

 

你可能感兴趣的:(nginx)