近期有一台服务器流量爆增,速度峰值从原来不到1M,一下子飚到12M,因为服务器上有很多mp3文件,是用户相册的背景音乐,估计是有用户把这个背景音乐的链接给发布出去了。
查看了一下日志文件,到处充斥着类似
125.71.138.240 - - [20/Oct/2007:23:59:29 +0800] "GET /user/hubaolai/misc/07131250f5da21189d8eea6104be3d9f.mp3 HTTP/1.1" 206 442947 "
http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=65&word=Anyclub+%C0%EE%D0%A2%C0%FB" "Mozilla/4.0 (compatible; MSIE 6.0; Win
dows NT 5.1)"
瀑布汗
而且这些流量主要集中在三个用户的目录下,检查了这三个用户的文件夹,除了mp3之外,一张图片都没有。额滴神呀,我们是做相册滴,这几个老兄也太有才了,20M的空间能放几个mp3呀,真是的,还非得把地址给共享出来。
vi httpd.conf
- SetEnvIfNoCase Referer "^http://.*\.admin99\.net" local_ref=1
- <FilesMatch "\.(mp3|jpg|jpeg)">
- Order Allow,Deny
- Allow from env=local_ref
- </FilesMatch>
以此,保护mp3,jpg,jpeg三种文件,只能通过相册里的播放器才能调用
这样的设置有一个小问题。直接在地址栏中输入一个图片或者mp3的地址的时候,也无法访问。
如果允许能直接访问这些文件
需要在刚才的配置中加上一句
- SetEnvIfNoCase Referer "^$" local_ref=1
如果要通过ip也能访问到这些文件,需要在上述配置中再加一句
- SetEnvIfNoCase Referer "^http://000\.000\.000\.000\.*" local_ref=1
如果你有多台服务器,并且他们在一个ip段中
那么上面这句可以写为
- SetEnvIfNoCase Referer "^http://000\.000\.000\.*" local_ref=1
上面两句配置都要主意其中第一个000前面没有那个“.”
保存退出重起apache
看日志,mp3.baidu.com来的链接,都成了403 Forbidden
观察10分钟,流量从12M里马回落到2M到3M之间
但是觉得这个流量还是偏高
再看日志,虽然大部分针对mp3的访问都成了403,却仍然有一些访问的代码成了206 获得部分文件?
百思不得其解,白查不得答案,感觉应该是迅雷,超级旋风之类的下载软件,自己用迅雷试了一下,果然还可以下载 -_-!。
据说这些软件有一种欺骗技术,可以欺骗服务器的reffer。有人根据迅雷下载是在日志中留下的agent代码 Mozilla/4.0 (compatible; MSIE 6.0 来进行限制,刚开始还挺高兴,猛地发现,自己访问网站是留下的agent代码也是这样地,这个问题留待以后解决,自己用IE访问,用maxthon访问,用迅雷下载,留下的agent代码都含有 Mozilla/4.0 (compatible; MSIE 6.0 。再细看这篇文章,发布日期是2006年,算了,你迅雷下载就下载吧,反正再过一星期,服务器上所有的mp3都要删除了,娃哈哈哈.....-_-!!!