如果服务器带宽较小,而网站的媒体文件都是保存在本地服务器的话,当别人大量引用你的媒体文件时,不但没有带来访问流量,你的文件反而成为了别人的免费外链,因此会造成服务器带宽和网络流量的浪费,此时,设置一下防盗链是很有必要的。
一、Nginx防盗链设置
编辑网站所在的*.conf配置文件,注释掉以下信息:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
添加以下信息,按需修改:
location ~* \.(gif|jpg|jpeg|png|bmp|swf|mp3|mp4|wav|doc|xls|rar|zip|gz|bz2|pdf)$ {
valid_referers none blocked lianghg.com *.lianghg.com server_names ~\.google\. ~\.baidu\. ~\.bing\.;
if ($invalid_referer) {
return 403;
#rewrite ^/ https://img.imyours.club/imgs/2019/04/f4516dec4c157cad.jpg;
}
}
以上设置了所有来自lianghg.com和域名包含google、baidu、bing的站点都可以访问当前网站的媒体文件,如果访问来源不在这个列表中,则会返回403给访问者。
二、Apache防盗链设置
编辑网站根目录下的伪静态文件.htaccess,添加以下信息,按需修改:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://lianghg.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://lianghg.com$ [NC]
RewriteCond %{HTTP_REFERER} !^https://www.lianghg.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://www.lianghg.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp|swf|mp3|mp4|wav|doc|xls|rar|zip|gz|bz2|pdf)$ https://img.imyours.club/imgs/2019/04/f4516dec4c157cad.jpg [R,NC]
另外,防盗链设置只能防止一般网站的对本站媒体文件的引用,并不能阻止采集站的采集,可采取屏蔽IP的方式来阻止采集。如果是想阻止某一个特定的网站来盗链,则可在网站所在的*.conf下添加以下信息:
location ~* \.(gif|jpg|jpeg|png|bmp|swf|mp3|mp4|wav|doc|xls|rar|zip|gz|bz2|pdf)$ {
if ($http_referer ~* (www.)?example.com) {
return 403;
#rewrite ^/ https://img.imyours.club/imgs/2019/04/f4516dec4c157cad.jpg;
}
}
这样设置之后,所有来自example.com的媒体文件引用都会返回403,而其他网站则不受影响。