Apache下如何实现防盗链、限制客户端下载线程数、限制下载带宽

防盗链原理: http标准协议中有专门的字段记录referer 一来能够追溯上一个入站地址是什么; 二来对于资源文件,能够跟踪到包含显示他的网页地址是什么。 所以全部防盗链方法都是基于这个Referer字段,主要有两种方法实现:html

第一种:使用FilesMatch ServerAdmin laogui@gmail.com DocumentRoot D:/www/www.chinahtml.com ServerName www.aaa.com ServerName aaa.com 盗用链接指定显示的页面。也能够不用此项,这样盗用链接也可没法使用。 ErrorDocument 404 http://www.chinahtml.com/error.html 容许www.aaa.com的网站使用 SetEnvIfNoCase Referer "^http://www.aaa.com" local_ref=1 容许 aaa.com 的网站使用 SetEnvIfNoCase Referer "^http://aaa.com" local_ref=1 定义防盗文件的扩展名 Order Allow,Deny Allow from env=local_ref 容许上面指定域名linux

防盗链设置样本:使用正则表达式
SetEnvIf Referer "^http://(.)+\.ilinux\.cn/" local_ref=1
SetEnvIf Referer "^http://(.)+\.isql\.cn/" local_ref=1
#SetEnvIf Referer "^http://(.)+\.other\.org\.cn/" local_ref=1
SetEnvIf Request_URI "/logo(.)+" local_ref=0
Order Allow,Deny
Allow from env=local_ref

解释:正则表达式

  1. 蓝色部分,表示设置容许访问的referer地址,第一行的意思为全部http协议访问,以.ilinux.cn结尾的域名地址,第二行相似,只是换成 了.isql.cn,表问我前面的鬼符是什么,不懂得能够去翻正则表达式的研究文献,不想深究的能够照猫画虎设置本身的网站。
  2. 绿色部分,表示不在上述引用域名范围内,但能够被放行的特例,本例中表示网站/目录,全部以logo开头的文件(用做容许其它网站的友情链接引用本站logo)。
  3. 橙色部分是设置反盗链的关键部分,上面每个设置都联系到了local_ref这个环境变量,只有这个变量为1,则容许被引用,不然显示一个X。
  4. 紫色部分设置了哪些扩展名的文件加入反盗链的规则。

第二种方法: 使用rewirte方式: RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn/.$ [NC] RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn/.$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn$ [NC] RewriteCond %{HTTP_REFERER} !^http://ilinux.cn/.$ [NC] RewriteCond %{HTTP_REFERER} !^http://ilinux.cn$ [NC] RewriteRule ..(gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip)$ http://www.ilinux.cn [R,NC] 上面的,须要Rewrite模板。全部指定的文件,若是Referer不是上面的值,将被重定向到首页。sql

还有使用.htaccess 文件的方法,不过不推荐使用,影响apache性能。 写一个.htaccess 包含如下代码: SetEnvIfNoCase Referer "^http://google.com/" local_ref=1 Order Allow,Deny Allow from env=local_ref Allow from 127.0.0.1 Allow from 123.123.123.123apache

若是你的网址是www.myst.cn就改成 SetEnvIfNoCase Referer "^http://www.myst.com/" local_ref=1 这意思是说防止人家连结你的jpg档案。能够增修为 <FilesMatch ".(jpg|zip|rar)"> ps:最后一个不使用区各线 Allow from 127.0.0.1 这表示容许连结主机的IP。 你要是默认其余网站能够连结的话,就填入该主机IP,把上述的code储存为.htaccess而后放入你安装的目录下便可。服务器

注:*nix系统在apache配置文件里面打开使用.htaccess功能。多线程

下面一一介绍怎么在Apache里面实现防盗链、限制客户端下载线程数,限制下载带宽这些功能。 防盗链 传统的防盗链都是经过Referer来判断用户来路的,不过这样的方法对于下载工具来讲形同虚设,由于如今的下载工具早就能伪造Referer了。 如今一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击链接的时候服务器会验证这个验证码是否有效从而决定是否容许下载。或者就是用某些方法把文件实际地址进行假装。不过这些都不怎么好用,下面介绍一个简单有效的方式来实现防盗链。 其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。 首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=jzxue.Com“,盗链而来的将没有这个Cookie。 在Apache的httpd.conf文件里面搜索: #LoadModule rewrite_module modules/mod_rewrite.so 把它前面的#去掉, 再找到块,在里面加入相似以下代码: # Other configurati**** … RewriteEngine On # 启动URL Rewrite引擎 RewriteCond %{HTTP_COOKIE} !^.(?:Site=jzxue.Com).$ # 对于Cookie里面没有特殊记录的请求进行重定向 RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面 这样若是一个盗链而来的请求将会由于没有特殊Cookie而被重定向到错误页面,就算实际地址暴露也不怕。至于这个Cookie的内容是什么以及有效时间彻底能够由管理员本身来设定,也就是说下载工具也无法伪造,从而防止了服务器资源被盗链的危险。dom

限制客户端多线程下载 限制多线程如今须要用到一个Apache的扩展模块mod_limitipconn,这里是做者的官方网站 http://dominia.org/djao/limitipconn2.html,先下载适合本身版本的模块文件到Apache安装目录下的modules目录下面,而后在httpd.conf文件中搜索: #LoadModule status_module modules/mod_status.so 把它前面的#去掉,再加入: ExtendedStatus OnLoadModule limitipconn_module modules/mod_limitipconn.dll # 若是你下载的不是Win版,请把后面的文件名改成你所下载的文件名。 # 这里表示限制根目录,即所有限制,能够根据须要修改 MaxConnPerIP 2 # 这里表示最多同时两个线程 NoLimit html/* # 这里表示html目录下不受限制 这样来自同一客户端的超过2个的线程请求将被拒绝,从而限制了客户端的多线程下载。工具

限制下载带宽 这个一样须要扩展模块支持,模块是mod_bw,在做者的官方网站http://ivn.cl/apache/能够下载到。一样也是放入modules目录下面,而后在httpd.conf文件中加入: LoadModule bw_module modules/mod_bw.dll 再找到块,加入: # Other configurati**** … BandwidthModule On # 启动带宽限制 ForceBandwidthModule On # 启动带宽限制 MaxConnection all 2000 # 最大链接数2000 Bandwidth all 200000 # 单个客户端最大带宽200KB 这样限制了同时最多2000个链接数,每一个客户端最大200KB的下载带宽。性能

到此,咱们的完美限制的HTTP下载服务器就配置完成了,从新启动你的Apache这些功能便能生效了。

相关文章
相关标签/搜索