Nginx与Apache环境防盗链设置

By | 2018年11月25日

如果服务器带宽较小,而网站的媒体文件都是保存在本地服务器的话,当别人大量引用你的媒体文件时,不但没有带来访问流量,你的文件反而成为了别人的免费外链,因此会造成服务器带宽和网络流量的浪费,此时,设置一下防盗链是很有必要的。

一、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,而其他网站则不受影响。

发表评论