海运的博客

Nginx安装配置防盗链模块nginx-accesskey

发布时间:April 13, 2012 // 分类:Nginx // No Comments

之前有介绍通过Nginx通过referer防盗链,此方法设置简单,不过referer信息可以伪造,不能达到完全防盗链的目的。
为追求完美可以使用nginx-accesskey模块防盗链,nginx-accesskey会根据不同的请求IP生成不同的key,拒绝无效的请求,经测试可防迅雷盗链。
安装需重新编译Nginx增加nginx-accesskey模块,Lnmp请参考Lnmp平滑升级及修改Nginx版本号
下载Nginx和nginx-accesskey

wget http://nginx.org/download/nginx-1.0.15.tar.gz
tar zxvf nginx-1.0.15.tar.gz 
cd nginx-1.0.15
wget http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz
tar zxvf Nginx-accesskey-2.0.3.tar.gz 

修改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"

编译安装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

编辑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为干扰码,可自定义修改
}

Nginx防盗链应用测试:

<?
$ipkey= md5("pass".$_SERVER['REMOTE_ADDR']);
echo "<a href=file.rar>file</a><br />";
echo "<a href=file.rar?key=".$ipkey.">file.rar?key=".$ipkey.">file</a><br />";
?>

Nginx图片/文件防盗链配置

发布时间:April 7, 2012 // 分类:Nginx // No Comments

Nginx可根据浏览器请求的Referer防盗链,限制非本站的页面链接请求,更严格的限制可使用防盗链模块nginx-accesskey,可防止迅雷盗链。
编辑Nginx配置文件,在Server段加入以下内容:

location ~* \.(jpg|gif|png)$ {      #限制的文件类型                                                                                                
valid_referers none blocked *.www.haiyun.me www.haiyun.me; #定义允许的域名
if ($invalid_referer) {   #如果请求非允许
#rewrite ^/ https://www.haiyun.me/error.png; #定向到指定图片
       return 403; #返回403
    }
  }
分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了