apache&nginx防止盗链设置
图片防止盗链也是个老生常谈的话题,然而,似乎总是陷入道高一尺魔高一丈的无限死循环中。盗链者往往千方百计,绞尽脑汁地去实现图片的转载。
对于一个图片站来说,盗链更是一种灾难。流量损失不说,无形中也大大加重了服务器的负载。
本文中,笔者分别提供apache和nginx两款常用的web服务器的防止盗链设置。希望能给各位多点启发。
#apache的防止盗链设置,可以在.htaccess中设置 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*\.(jpg|gif|bmp|png)$ /images/fangzhidaolian.jpg [L]
上面这样的设置会将不是来自于本站的图片引用全部重定向到/images/fangzhidaolian.jpg 。这样的设置太过于严格了,你会限制住从rss中访问过来的用户。因此,我们要对rss和搜索引擎开放。
#允许搜索引擎和RSS服务器访问 RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.com/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?google\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?google\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?bing\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?bing\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yahoo\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?yahoo\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?xianguo\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?zhuaxia\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?youdao\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?baidu\.(.+)/ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*\.(jpe?g|gif|png)$ /transparent.gif [L]
nginx的防止盗链设置似乎更简单一些。
#nginx防止盗链设置 location ~* \.(jpg|jpeg|png|gif|css|js|swf|mp3|avi|flv|xml|zip|rar)$ { valid_referers none blocked *.yoursite.com *.baidu.com *.feedsky.com *.google.com *.xiaoguo.com *.zhuaxia.com; if ( $invalid_referer ) return /images/fangzhidaolian.jpg; }