最近发现服务器的流量猛增,打开网页速度很慢,查看了一下Apache的log,发现:
166.111.208.185 - - [18/Dec/2007:22:27:55 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 2120152
166.111.208.185 - - [18/Dec/2007:22:27:56 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 2025202
166.111.208.185 - - [18/Dec/2007:22:27:56 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 757441
59.70.246.42 - - [18/Dec/2007:22:27:57 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 3012532
59.70.246.42 - - [18/Dec/2007:22:27:58 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 2809812
59.70.246.42 - - [18/Dec/2007:22:28:00 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 3033136
59.70.246.42 - - [18/Dec/2007:22:28:00 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 3036570
原来是因为服务器上的mp3文件被盗链了或者被迅雷这类的下载软件当成了种,被别人多线程下载,造成带宽被占,Apache响应不过来。
在网上找了一下,发现利用mod_rewrite模块就可以很好的完成Apache 的防盗链。
1. 在httpd.conf中加载mod_rewrite模块:
- 去掉#LoadModule rewrite_module modules/mod_rewrite.so 中的#号
- <Directory />
Options FollowSymLinks
AllowOverride None
</Directory>,将AllowOverride None改成AllowOverride All 2. 在music目录下新建一个.htaccess文件
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xmulib\.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://210.34.4.17/.*$ [NC]
RewriteRule \.(mp3|jpg)$ http://www.xmulib.net [R,NC]
#RewriteLog “logs/rewrite.log”
#RewriteLogLevel 3
参数说明:
- RewriteCond :rewrite规则定义,只有满足这里定义的规则,才执行rewrite
- %{HTTP_REFERER} :表示链接的来源参照
- !^http://(www\.)?xmulib\.net/.*$ :表示与%{HTTP_REFERER}进行匹配的字符串
- [NC] :nocase,表示在进行匹配的时候忽略大小写。当有多个RewriteCond时默认其关系为And,如果要改成OR,可用[NC, OR]表示
- RewriteRule :当满足RewriteCond条件时,访问mp3或者jpg文件就会被重定向到http://www.xmulib.net
- RewriteLog : 日志文件,帮助分析rewrite规则是否正确
|