存档

文章标签 ‘apache’

nginx apache xcache 效果对比测试

2008年11月23日

安装后我进行了测试以下为测试结果
分别开启关闭xcache 运行两次ab -n 1000 http://bbs.k12zy.com/forum-19-1.html

Server Software: nginx/0.6.33
Server Hostname: bbs.k12zy.com
Server Port: 80
Document Path: /forum-19-1.html
Document Length: 32118 bytes

Time taken for tests: 38.976547 seconds
Requests per second: 25.66 [#/sec] (mean)
Time per request: 38.977 [ms] (mean)
Time per request: 38.977 [ms] (mean, across all concurrent requests)
Transfer rate: 814.16 [Kbytes/sec] received

Time taken for tests: 17.326479 seconds
Requests per second: 57.72 [#/sec] (mean)
Time per request: 17.326 [ms] (mean)
Time per request: 17.326 [ms] (mean, across all concurrent requests)
Transfer rate: 1831.47 [Kbytes/sec] received

那么apache服务器的效果如何呢,又做了测试

Server Software: Apache/2.2.3
Server Hostname: 121.250.15.4
Server Port: 80
Document Path: /forum-19-1.html
Document Length: 32116 bytes

Time taken for tests: 32.138246 seconds
Requests per second: 31.12 [#/sec] (mean)
Time per request: 32.138 [ms] (mean)
Time per request: 32.138 [ms] (mean, across all concurrent requests)
Transfer rate: 988.04 [Kbytes/sec] received

Time taken for tests: 20.6633 seconds
Requests per second: 49.98 [#/sec] (mean)
Time per request: 20.007 [ms] (mean)
Time per request: 20.007 [ms] (mean, across all concurrent requests)
Transfer rate: 1587.17 [Kbytes/sec] received

 其中红色为开启xcache的值

结果来看开启xcache肯定要快,至于apache和nginx的fastcgi来比较缺让人看的不清楚, 只能解释由于第一次测试的是nginx不开xcache可能在数据库端使其变慢,都以一次测试的值也不能算作科学统计,仅做为自己的测试吧。

linux, 我的网站 , , , ,

[转]apache 的防盗链

2008年11月22日

NginxHttpAccessKeyModule nginx的防盗链插件

直接用HTTP服务器下载也不是很容易的事。最开始在IIS里面配置,IIS只能设定最大下载速度和最大连接数,这对于一些使用下载工具一来就开50+线程霸道下载的朋友明显是防不住的。网上搜了N久就发现一个用Delphi写的看不懂的ISAPI Filter以及别的收费软件若干。试过之后都起不了作用,也便放弃了,最后发现Apache有这些开源的功能模块,最终打造出完美限制的HTTP下载服务器。

首先说说完美限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面一一介绍怎么在Apache里面实现这些功能。

防盗链

传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。

现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。

其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。

首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=LeiDown.Com“,盗链而来的将没有这个Cookie。

在Apache的httpd.conf文件里面搜索:

#LoadModule rewrite_module modules/mod_rewrite.so

把它前面的#去掉,再找到<Directory />块,在里面加入类似如下代码:

<Directory />
     # Other configurations …
    RewriteEngine On # 启动URL Rewrite引擎
   RewriteCond %{HTTP_COOKIE} !^.*(?:Site=LeiDown.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这些功能便能生效了。因为Apache和这些模块都是开源免费的,我们不需要为此掏一分钱,不用去购买那些第三方的软件,只是需要多去了解一下这些软件的使用说明。不要一切都祈祷有现成美好的东西,自己动手做一次会有不一样的收获。

RewriteLock RewriteLock file-path None 设置RewriteMap程序的同步锁文件 要求是本地文件,此文件只对rewriting map-program有效。 RewriteMap RewriteMap MapName MapType:MapSource Notused per default 定义重写影射 具体说明参见文档 RewriteBase RewriteBase URL-path physical directory path 设置目录范围内重写的基本URL 具体说明参见文档 RewriteCond RewriteCond TestString CondPattern None 定义规则条件 具体说明参见文档 RewriteRule RewriteRule Pattern Substitution None 定义重写规则 具体说明参见文档

备忘录, 我的网站 ,