一,普通防盗,根据header头信息进行判断
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
#expires 30d;
#access_log off;
##valid_referers none blocked *.xxx.com xxx.com;
valid_referers *.xxx.com xxx.com;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://img.xxx.com/err.jpg;
}
}或者对某个图片目录防盗
location /images/ {
##alias /data/images/;
valid_referers none blocked server_names *.xxx.com xxx.com ;
if ($invalid_referer) {return 403;}
}二,使用ngx_http_accesskey_module
下载NginxHttpAccessKeyModule模块文件
修改nginx accesskey配置文件
vim nginx-accesskey-2.0.3/config #修改$HTTP_ACCESSKEY_MODULE为ngx_http_accesskey_module USE_MD5=YES USE_SHA1=YES ngx_addon_name=ngx_http_accesskey_module HTTP_MODULES="$HTTP_MODULES ngx_http_accesskey_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_accesskey_module.c"
3. 编译nginx
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module \ --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=./nginx-accesskey-2.0.3/ make make install
4. 修改nginx配置文件
#location / { #限制相应目录
location ~ .*\.(7z|iso|msi|tar|zip|rar|gz|exe)$ { #或限制相应文件accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "pass$remote_addr"; #pass为干扰码,可自定义修改
}accesskey为模块开关;
accesskey_hashmethod为加密方式MD5或者SHA-1;
accesskey_arg为url中的关键字参数;
accesskey_signature为加密值,此处为pass和访问IP构成的字符串。
5. 防盗代码测试
$ipkey= md5("pass".$_SERVER['REMOTE_ADDR']);
echo "<a href="file.rar">file</a>";
echo "<a href="file.rar?key=".$ipkey."">file.rar?key=".$ipkey.">file</a>";三,使用secure_link防盗
为nginx安装secure_link模块
# ./configure --with-http_secure_link_module \ --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module # make # make install
2. 配置nginx
location / {
secure_link $arg_md5,$arg_expires; #设置两个变量
secure_link_md5 "key$remote_addr$arg_expires"; #设置md5,当作口令
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}3. 防盗代码测试
$secret = 'key'; // key,自定义秘钥
$ipip=$_SERVER["REMOTE_ADDR"];
$expires = time()+300; //这里是300妙内访问有效
$md5 = base64_encode(md5($secret . $ipip . $expires, true)); // MD5生成
$md5 = strtr($md5, '+/', '-_'); // + and / 替换掉
$md5 = str_replace('=', '', $md5); // 替换=
$url = "http://domain.com/test.zip?md5=$md5&expires=$expires"; //安全下载链接demo设置
$arr = array("url"=>$url, "expires"=>date("Y-m-d H:i:s", $expires), "md5"=>$md5);
echo json_encode($arr); //json格式输出
fffffasdfasdfasdfasdfas;kdfjlaskl;dfjaskl;dfjakls;dfjkal;sfdjlaks;df als;dfj awkls;dfj asl;dfj aslk;dfjaskl;dfjas;ldf
访客评论