实现Apache下载防盗链、限制客户端下载线程数
完美实现Apache下载防盗链、限制客户端下载线程数,限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面介绍怎么在Apache里面实现这些功能。
防盗链
传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。
现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。
其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。
首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=zuimoban.com“,盗链而来的将没有这个Cookie。
在Apache的httpd.conf文件里面搜索:
#LoadModule rewrite_module modules/mod_rewrite.so
把它前面的#去掉,再找到<Directory />块,在里面加入类似如下代码:
<Directory /> # Other configurations … RewriteEngine On # 启动URL Rewrite引擎 RewriteCond %{HTTP_COOKIE} !^.*(?:Site=zuimoban.com).*$ # 对于Cookie里面没有特殊记录的请求进行重定向 RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面 </Directory>
这样如果一个盗链而来的请求将会因为没有特殊Cookie而被重定向到错误页面,就算实际地址暴露也不怕。至于这个Cookie的内容是什么以及有效时间完全可以由管理员自己来设定,也就是说下载工具也没法伪造,从而防止了服务器资源被盗链的危险。
限制客户端多线程下载操作流程
限制多线程现在需要用到一个Apache的扩展模块mod_limitipconn,这里是作者的官方网站http://dominia.org/djao/limitipconn2.html,先下载适合自己版本的模块文件到Apache安装目录下的modules目录下面,然后在httpd.conf文件中搜索:
#LoadModule status_module modules/mod_status.so
把它前面的#去掉,再加入:
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.dll
# 如果你下载的不是Win版,请把后面的文件名改为你所下载的文件名
代码如下:
<IfModule mod_limitipconn.c> <Location /> # 这里表示限制根目录,即全部限制,可以根据需要修改 MaxConnPerIP 2 # 这里表示最多同时两个线程 NoLimit html/* # 这里表示html目录下不受限制 </Location> </IfModule>
这样来自同一客户端的超过2个的线程请求将被拒绝,从而限制了客户端的多线程下载。
限制下载带宽操作流程
这个同样需要扩展模块支持,模块是mod_bw,在作者的官方网站http://ivn.cl/apache/可以下载到。同样也是放入modules目录下面,然后在httpd.conf文件中加入:
LoadModule bw_module modules/mod_bw.dll
再找到<Directory />块,加入:
<Directory /> # Other configurations … BandwidthModule On # 启动带宽限制 ForceBandwidthModule On # 启动带宽限制 MaxConnection all 2000 # 最大连接数2000 Bandwidth all 200000 # 单个客户端最大带宽200KB </Directory>
这样限制了同时最多2000个连接数,每个客户端最大200KB的下载带宽。
到此,我们的完美限制的HTTP下载服务器就配置完成了,重新启动你的Apache这些功能便能生效了。
相关文章
网站报错a padding to disable MSIE and Chrome
给我们客户wordpress 网站搬家后,出现404报错, 查看源码里隐藏看到一句: a padding to disable MSIE and Chrome friendly error page。 这是404.3b报错,意思是404.3-MIME映射策略阻止本请求 这个报错一般...
2020-02-22实现Apache下载防盗链、限制客户端下载
完美实现Apache下载防盗链、限制客户端下载线程数,限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面介绍怎么在Apache里面实现这些功能。 防盗链 传统的防盗链都是通...
2020-04-23最好的网站安全htaccss规则防火墙脚本
本文章htaccess规则是一款强大的防火墙脚本,轻巧且超快。它努力在安全性和性能之间实现最佳平衡,直接构架在htaccess规则上,服务器不用安装第三方软件工具,直接补充网站安全。...
2020-04-24设置用.htaccess显示PHP错误信息
使用.htaccess设置规则可以在某种程度上更改PHP的错误显示的设置,实际上,相当于更改PHP.ini的参数,很是方便。 将以下相应代码放到对应目录中的.htaccess文件,即可实现相应功能。 关...
2020-04-24用Nginx如何配置运行无扩展名PHP文件或非
用Nginx如何配置运行无扩展名PHP文件或非.PHP扩展名文件 使用Apache + PHP 很容易做到运行无扩展名的PHP文件。 在Nginx中能做到吗?是可以的。 只需将nginx.conf文件中的默认 location ~ .php$ { ....
2021-07-31服务器无法SSH远程宝塔面板也无法打开
一日客户找来,说网站正常访问,但是服务器无法SSH远程链接,所装的宝塔控制面板也无法访问,找到服务器商那边链接查看,宝塔基本命令也是无法运行,最模板思考了下,解决方法...
2022-04-13