你的位置:萧过无痕的栖息地 \ 分类:建站资源 \ 文章正文

nginx防盗链设置

萧过无痕 @ 2010年9月21日 0:24:53 周二

 

nginx有个模块叫做 ngx_http_referer_module,通过这个模块,可以很方便的做防盗链设置

一般常用的方法是在 server或者location段中加入

valid_referers   none  blocked  www.mydomain.com  mydomain.com;

详见下面的例子

其中 none 表示 空的来路,也就是直接访问,比如直接在浏览器打开一个图片

blocked 表示被防火墙标记过的来路

server_names 也就是域名了。0.5.33以后的版本中,可以用*.admin99.com来表示所有的二级域名

 

一。针对不同的文件类型

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

     valid_referers none blocked *.admin99.net admin99.net;

     if ($invalid_referer) {

     #rewrite ^/ http://www.admin99.net/403.html;

     return 403;

      }

}

 

二。针对不同的目录

location /img/ {

    root /data/img/;

    valid_referers none blocked *.admin99.net admin99.net;

    if ($invalid_referer) {

                   rewrite  ^/  http://www.admin99.net/images/error.gif

                   #return   403;

    }

}

 

三。以上是nginx自带的防盗链功能,另外还可以利用 nginx 的第三方模块 ngx_http_accesskey_module 来实现下载文件的防盗链

 

安装Nginx和nginx-http-access模块

#tar zxvf nginx-0.7.61.tar.gz

#cd nginx-0.7.61/

#tar xvfz nginx-accesskey-2.0.3.tar.gz

#cd nginx-accesskey-2.0.3 

#vi config

#把HTTP_MODULES="$HTTP_MODULES $HTTP_ACCESSKEY_MODULE" 修改成HTTP_MODULES="$HTTP_MODULES ngx_http_accesskey_module" (这是此模块的一个bug)

#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-accesskey-2.0.3

编译成功后,在主配置文件加入类似下面的代码:

 

server{ 

..... 

    location /download { 

        accesskey             on; 

        accesskey_hashmethod  md5; 

        accesskey_arg         "key"; 

        accesskey_signature   "mypass$remote_addr"; 

    } 

}/download 为你下载的目录。

 

前台php产生的下载路径格式是:

 

1.http://*****.com/download/1.zip?key=<?php echo md5('mypass'.$_SERVER["REMOTE_ADDR"]);?>

这样,当访问没有跟参数时,其他用户打开时,就出现:403

 

 NginxHttpAccessKeyModule第三方模块。实现方法如下:

1. 下载NginxHttpAccessKeyModule模块文件:Nginx-accesskey-2.0.3.tar.gz;

2. 解压此文件后,找到nginx-accesskey-2.0.3下的config文件。编辑此文件:替换其中的"$HTTP_ACCESSKEY_MODULE"为"ngx_http_accesskey_module";

3. 用一下参数重新编译nginx:

./configure --add-module=path/to/nginx-accesskey

4. 修改nginx的conf文件,添加以下几行:

location /download {

  accesskey             on;

  accesskey_hashmethod  md5;

  accesskey_arg         "key";

  accesskey_signature   "mypass$remote_addr";

}

其中:

accesskey为模块开关;

accesskey_hashmethod为加密方式MD5或者SHA-1;

accesskey_arg为url中的关键字参数;

accesskey_signature为加密值,此处为mypass和访问IP构成的字符串。

 

访问测试脚本download.php:

<?

$ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);

$output_add_key="<a href=http://www.example.cn/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />";

$output_org_url="<a href=http://www.example.cn/download/G3200507120520LM.rar>download_org_path</a><br />";

echo $output_add_key;

echo $output_org_url;

?>

访问第一个download_add_key链接可以正常下载,第二个链接download_org_path会返回403 Forbidden错误。

标签:防盗链  Nginx  模块  

引用地址:

大家的话:(我来说两句)
  • 4楼:萧过无痕 2010-09-22 02:58 说: gravatar

    @白衣大戈格:晕,你这么瘦,还减肥啊,欺负我比你胖是吧!这么刺激我!!

  • 3楼:萧过无痕 2010-09-22 02:24 说: gravatar

    @白衣大戈格:你怎么还没睡觉~~~

  • 2楼:白衣大戈格 2010-09-22 01:56 说: gravatar

    睡觉又睡不饱,最近减肥,还饿着呢。。。

  • 1楼:白衣大戈格 2010-09-22 01:22 说: gravatar

    米有人要盗链我。。。

说说看:(点击申请属于你的个性头像)

(*)

关于站长
网站公告
  • O(∩_∩)O
分类
最近关注
  • 最近关注着的娱乐节目有:
    1.CSI现场犯罪调查(三部);
    2.危机边缘
    3.暗侠
    4.都市侠盗
随便溜达
最新评论
言论
  • ⒈决不能因为一件伤心的失望的事,就从此放弃生活中一切有价值的东西;
    ⒉要像一颗青树,大风将树根吹折,然而巨大的树干,却永远树立;
    ⒊想匆匆忙忙地完成一件事以期达到加快速度的目的,结果总是要失败的;
    ⒋如果你是对的,就要试着温和地,技巧地让对方同意你;如果你错了,就要迅速而热诚地承认。这要比为自己争辩有效和有趣的多;
    ⒌"思考"应当走到众人前面去,"冤枉"不妨留在后面;
    ⒍如果试图改变一些东西,首先应该接受很多东西;
    ⒎以后更新^_^
友情连接
存档