Powered by Typecho)))
Optimized by EAimTY
下载模块:http://www.nowhere-land.org/programs/mod_vhost_limit/
安装:
1. apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so
在 httpd.conf 加入:
1. LoadModule vhost_limit_module libexec/mod_vhost_limit.so
2. AddModule mod_vhost_limit.c
配置:
1. MaxClients 150
2. ExtendedStatus On
3.
4. NameVirtualHost *
5. <VirtualHost *>
6. ServerName server1
7. DocumentRoot /some/where/1
8. MaxVhostClients 100
9. </VirtualHost>
10.
11. <VirtualHost *>
12. ServerName server2
13. DocumentRoot /some/where/2
14. MaxVhostClients 30
15. </VirtualHost>
16.
17. <VirtualHost *>
18. ServerName server3
19. DocumentRoot /some/where/3
20. </VirtualHost>
其中:server1 被限制为 100 个并发线程数。server2 被限制为 30 个并发线程数。server3 没有被限制。
注:需 mod_status 的 ExtendedStatus On 支持!!
如超出限制的并发数在客户端就会出现503错误:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
——————————————————————————–
Apache/1.3.27 Server at server1 Port 80
在 error_log 中将会有类似以下的错误提示:
[Mon Jun 23 15:22:24 2003] [error] client access to server1 deferred, MaxVhostClients 100 exceeded
——————————————————————————–
下载
mod_limitipconn.c
http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
http://dominia.org/djao/limit/mod_limitipconn-0.04-1.i386.rpm
(proxy client detection feature not enabled)
http://dominia.org/djao/limit/mod_limitipconn-0.04-1.src.rpm
我用的是tar包下载的是mod_limitipconn-0.04.tar.gz,(该模块已经可以支持apache2)在服务器上执行
# wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
下载到本地,然后执行下面的命令编译安装。我的apache位于/usr/local/apache目录
解压缩:
1. [root@ns chenlf]# tar zxvf mod_limitipconn-0.04.tar.gz
2. mod_limitipconn-0.04/
3. mod_limitipconn-0.04/Makefile
4. mod_limitipconn-0.04/README
5. mod_limitipconn-0.04/apachesrc.diff
6. mod_limitipconn-0.04/mod_limitipconn.c
7. mod_limitipconn-0.04/ChangeLog
编译安装:
1. [root@ns chenlf]# cd mod_limitipconn-0.04
2. [root@ns mod_limitipconn-0.04]# ls
3. apachesrc.diff ChangeLog Makefile
4. mod_limitipconn.c README
5. [root@ns mod_limitipconn-0.04]
6. # /usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c
7. gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I
8. /usr/local/apache/include -c mod_limitipconn.c
9. gcc -shared -o mod_limitipconn.so mod_limitipconn.o
10. [activating module `limitipconn' in /usr/local/apache/conf/httpd.conf]
11. cp mod_limitipconn.so \
12. /usr/local/apache/libexec/mod_limitipconn.so
13. chmod 755 /usr/local/apache/libexec/mod_limitipconn.so
14. cp /usr/local/apache/conf/httpd.conf
15. /usr/local/apache/conf/httpd.conf.bak
16. cp /usr/local/apache/conf/httpd.conf.new
17. /usr/local/apache/conf/httpd.conf
18. rm /usr/local/apache/conf/httpd.conf.new
修改配置文件:
1. 全局控制,在httpd.conf加上以下几行:
1. <IfModule mod_limitipconn.c>
2. <Location /> # 所有虚拟主机的/目录
3. MaxConnPerIP 3 # 每IP只允许3个并发连接
4. NoIPLimit image/* # 对图片不做IP限制
5. </Location>
6. <Location /mp3> # 所有主机的/mp3目录
7. MaxConnPerIP 1 # 每IP只允许一个连接请求
8. OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
9. </Location>
10. </IfModule>
2. 局部限制,你也可以在虚拟主机的配置文件里设置IP限制,方法是完全一样:
1. <VirtualHost xx.xxx.xx.xx>
2. ServerAdmin chenlf@chinalinuxpub.com
3. DocumentRoot /home/my
4. ServerName www.my.com
5. <IfModule mod_limitipconn.c>
6. <Location /> # 所有虚拟主机的/目录
7. MaxConnPerIP 5 # 每IP只允许3个并发连接
8. NoIPLimit image/* # 对图片不做IP限制
9. </Location>
10. <Location /mp3> # 所有主机的/mp3目录
11. MaxConnPerIP 2 # 每IP只允许一个连接请求
12. OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
13. </Location>
14. </IfModule>
15. ErrorLog /home/my/logs/error_log
16. CustomLog /home/my/logs/access_log common
17. </VirtualHost>
3. 此外必须将 apache 的 ExtendedStatus 设置为ON。
在httpd.conf找到 # ExtendedStatus On 去掉前面的注释即可。
好了,全部配置结束,重起apache就可以生效了。