Nginx防盗链

     特别是做下载的站 不限制下客户端的连接线程数和客户端的下载带宽 web服务器有限的连接资源以及服务器带宽资源很快被耗尽 如今下载工具越来越强大 对做下载站的同仁都是比较棘手的事情 不仅如此 被其他工具或者其他网站盗链也是很头痛的事情 防盗链的方法相信各位都有高招应付 这里记录一下自己用nginx做下载用的服务器防盗链和限制线程和带宽的方法

先说防盗链
防盗链很多都是做rewrite,判断referer是否有效,对图片类比较有效,对web服务器来说,apache有rewrite模块支持
nginx则有ngx_http_referer_module模块支持,配置简单,nginx举例

引用
location ~* \.(gif|jpg|png)$ {
valid_referers none blocked www.askwan.com baidu.com;
if ($invalid_referer) {
rewrite ^/ http://www.askwan.com/error.html;
}
}
但referer的伪造都很easy,所以这种方式的防盗链层次较浅

在nginx 的wiki站了解到一个第三方模块ngx_http_accesskey_module,通过自己测试,能有效的防盗链,特别是对于文件下载站的防盗链非常有效。
有关这个模块的一些文档在这里去看:http://wiki.codemongers.com/NginxHttpAccessKeyModule
举例一个 

引用
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg “key”;
accesskey_signature “mypass$remote_addr”;
}

根据每个客户端的IP,加上“信号处理”中的噪声“mypass”,然后用MD5加密 产生一个32位MD5值,
只有配对的才可以下载 无配对的统一返回“403 Forbidden” 

定期修改一下mypass或者key,下载地址就变了,而下载目录都不变动 还不错的说

再说一下
nginx的线程限制和带宽限制

这里有nginx的标准模块ngx_http_limit_zone_module
这个模块可以针对条件,进行会话的并发连接数控制。
举例:
引用
server {
location /download/ {
limit_conn one 2;
limit_rate 32k;
}
只允许一客户端2个线程,每线程最大下载速度32k bytes

文章来自: 网络
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: 1569
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 3+6=?
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册账号.
字数限制 500 字 | UBB代码 关闭 | [img]标签 关闭