Archive for the 'apache' Category

打响下载专项治理第一枪

Monday, January 9th, 2006

提供锵锵三人行podcast以来,流量虽增加很多,但一直还维持正常水平,但最近几日突然增加了数倍,而且从awstats的统计日志中还可看到有极大数量的”Not viewed traffic(不可见流量)”,经查这部分主要是服务器响应为”206 Partial Content”的多线程下载流量。再这么下去,势必影响正常使用者的使用和服务器的其它功能。于是,我打响了下载专项治理的第一枪。
通过分析服务器日志,本次打击目标为以下两个:
1.严厉打击baidu mp3盗连现象
特征:
HTTP refer中包含”mp3.baidu.com”和”m?ct=”关键字。(前者为baidu的mp3索引爬虫,后者为实际的下载连接)
baidu真是猛,从它过来的mp3下载流量占到总量的80%以上,而且大部分人都使用多线程下载(最多的我还看到同时使用15个线程的)。
还好之前复习过了.htaccess文件的用法,现在一个文件就把baidu搞定了:
RewriteEngine on
RewriteCond %{HTTP_REFERER} mp3\\.baidu\\.com [NC,OR]
RewriteCond %{HTTP_REFERER} m\\?ct=
RewriteRule .* – [F]
2.严厉打击使用过多线程同时下载现象
我提供的这个服务主要是为了方便朋友们订阅podcast,所以不管是通过iTunes订阅还是通过podlook在线听的朋友都不会像上面提到那位用15个线程同时下载一个文件的(忘了说,他还同时下载两个文件呢)。其实大家都宽带了,使用单线程下载不会比15个线程慢多少,而且能够减轻服务器的负担,是对其他用户的一个最起码的尊重。
我使用了针对Apache 2的mod_limitipconn模块来限制单一IP的mp3文件的并发下载数为2。
安装很简单,大家可以参考这篇: Linux下Apache并发连接数和带宽控制。把相关的配置加在httpd.conf的虚拟主机部分就起作用了:
#### www.douzi.org ##############################
<VirtualHost 219.149.56.157>
DocumentRoot /usr/wwwroot/douzi/html
ServerAdmin admin@douzi.org
DirectoryIndex index.html index.php
ServerName www.douzi.org
ServerAlias douzi.org
ErrorLog /var/log/httpd/douzi/error_log
CustomLog “|/usr/bin/cronolog /var/log/httpd/douzi/access_log.%Y%m%d” combined
HostNameLookups [...]