防盗链的教程网上不少,我这里也是收藏一下代自己以后用,就不详细说了,本文的方法主要有两种情况,利用Nginx自带的模块和第三方模块ngx_http_accesskey_module,相对于前者来说后者的效果更强,深度防盗比较不错。

一:一般的防盗链如下:

location ~* \.(gif|jpg|png|swf|flv)$
{
valid_referers none blocked www.vcoo.me vcoo.me;
if ($invalid_referer)
{
  rewrite ^/ http://www.vcoo.me/404.html;
  #return 403;
}
}

第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对www.vcoo.me这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到指定页面,当然直接返回403也是可以的。
二:针对图片目录防止盗链:

location /images/
{
alias /data/images/;
valid_referers none blocked server_names *.vcoo.me vcoo.me;
if ($invalid_referer) {return 403;}
}

三:使用第三方模块ngx_http_accesskey_module实现Nginx防盗链
下载Accesskey 源码包 点击这里下载.http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz
然后再ssh里把accesskey的源码解压 例如所有文件被解压在/home/accesskey/ 下.
然后解压nginx源码 在常规./configure 的参数后 添加上 –add-module=/home/accesskey 就可以了
微酷这里用到的编译Nginx的命令:

./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_ssl_module –with-http_stub_status_module –with-http_dav_module –with-http_secure_link_module –add-module=/home/accesskey

编译之后make,之后在nginx/objs目录下的nginx文件覆盖/usr/local/nginx/sbin下文件(记得备份旧文件),重启Nginx
然后就是配置nginx了 这里贴上独立的一段

accesskey             on;
accesskey_hashmethod  md5;
accesskey_arg         “参数”;
accesskey_signature   “密码$remote_addr”;

把上面的参数改成你喜欢的 比如k密码改成比如123之类的. 单独保存为一个文件 比如acc.conf;
然后在需要的location下include这个conf文件即可 例如

location /picture
{
include acc.conf;
}

如此这般设置要以后 还需要在php代码里算出这个k的值:

<!–?php
$ipkey= md5(“配置文件里的密码”.$_SERVER[‘REMOTE_ADDR’]);
?–>
<img src=”/picture/t.jpg?k=&lt;?php echo $ipkey; ?&gt;” alt=”” />

发表评论

/ 快捷键:Ctrl+Enter