使用mod_limitipconn模块限制IP并发连接数
安装:

wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2
tar jxvf mod_limitipconn-0.24.tar.bz2
cd mod_limitipconn-0.24
/usr/local/apache2/bin/apxs -c -i mod_limitipconn.c

编辑httpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.so #将路径修改为安装后的路径,保存时去掉以下代码的注释
 
<ifModule mod_limitipconn.c>
<location /> #对应根目录
MaxConnPerIP 5 #最大并发数为5
NoIPLimit image/* #对图片不做限制
</location>
<location /test> #对根目录下的test目录做限制
MaxConnPerIP 2 #最大并发数为2
</location>
</ifModule>

如果想限制虚拟主机的ip并发连接数,可以修改extra/httpd-vhost.conf把 IfModule mod_limitipconn.c 这一段复制到Virtualhost中就可以了。

测试:
测试很简单,把最大连接数调小一点,随便一个浏览器访问页面,然后按着F5,让页面不断刷新,一下就可以弹出503错误

使用mod_bandwidth模块限制带宽
mod_bandwidth可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。
安装:

wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz
tar zxvf mod_bw-0.7.tgz
cd mod_bw
/usr/local/apache2/bin/apxs -c -i mod_bw.c

编辑httpd.conf配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
LoadModule bw_module modules/mod_bw.so
 
<virtualHost *:80>
ServerName vhost1.cszhi.com
DocumentRoot /var/www/vhost1
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000 #每个客户端最高速度可达50KB
LargeFileLimit * 500 50000
MaxConnection all 6
</virtualHost>

其它参数事例说明,详细的见源码包里的mod_bw.txt:

1
2
3
4
5
6
7
8
9
10
11
BandWidth localhost 0                                      #对localhost不限速
BandWidth 192.168.1.5 102400 #对192.168.1.5限速为100KB
BandWidth “u:^Mozilla(.*)” 10240 #用mozilla时限速10KB
BandWidth “u:wget” 102400 #如果用wget下载时限速10KB
MinBandWidth all -1 #保证每个客户端最高速度可达10KB
LargeFileLimit .jpg 100 10240 #jpg文件超过100KB,限速10KB
#下面的510挺好,如果不设置,apache自己会报错,就根报404差不多,页面非常的丑
ErrorDocument 510 /exceed_speed.html
BandWidthError 510
MaxConnection all 10 #所有ip最大连接数为10
MaxConnection 192.168.1.5 5 #192.168.1.5最大连接数为5

测试:
使用mod_bw.so模块前:

使用mod_bw.so模块后:

安装过程中可能出现的问题:

1、添加完mod_bw.so模块,重启apache时出现错误:

[root@vps httpd]# /etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: httpd: Syntax error on line 203 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_bw.so into server: /etc/httpd/modules/mod_bw.so: undefined symbol: apr_atomic_cas
[FAILED]

修改一下mod_bw.c 就可以:

1
2
3
4
5
6
7
8
9
#ifdef APR_MAJOR_VERSION   //添加这行
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif
#endif //添加这行

重新编译:

/usr/local/apache2/bin/apxs -c -i mod_bw.c

2、如果服务器没有安装apxs,可以参照以下方法安装:
apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。

输入命令查看是否有httpd-devel这个包,如果没有需要安装

rpm -qa|grep httpd
yum -y install httpd-devel

https://blog.csdn.net/lgq421033770/article/details/44673237

Apache限制IP并发数和流量控制的更多相关文章

  1. 利用apache限制IP并发数和下载流量控制

    一,为什么要对IP并发数,下载流量进行控制 说正题之前,先给大家讲个故事,那是在2007年,我进了一家公司,当时我们正在给达芙妮做电子商务网,www.idaphne.com.从三月份开始做的吧,九月份 ...

  2. 如何配置apache最大的并发数

    如何配置apache最大的并发数MPM(多路处理模块)常见:1.perfork 预处理进程方式2.worker 工作者模式3.winnt 在windows使用 案例:把apache的最大并发数配置成1 ...

  3. nginx限制ip并发数

    nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1.添加limit_zone 这个变量只能在http使用 vi /usr/local/nginx/conf/nginx.conf l ...

  4. apache 限制连接并发数和下载速度

    apache 限制并发数 需要安装:mod_limitipconn模块 安装方法:yum install mod_limitipconn 安装完成后: 检查 Apache 模块目录,看是否含有 mod ...

  5. Linux 下统计Apache每分钟的并发数

    脚本非常简单,不清楚原理,逐行运行即可. 使用时将脚本复制到home目录,并添加执行权限.定时任务即可. 代码内容如下: #!/bin/sh date >> /home/date-time ...

  6. nginx与apache 限制ip连接数和带宽方法

    今天有个人问我,nginx怎么限制ip连接数,突然想不起来了,年龄大了,脑子不怎么好使了.还要看一下配置才想起了.那个人又问我,你测试过的吗?一下子把我问蒙了,我真没测试过了,也不知道启作用了没有. ...

  7. WINDOWS 下 修改APACHE 并发数

    某次,配置大型站点.日IP过2W. 刚解析完,就特别卡,每个页面都是慢吞吞的打开的. 至少30秒.但是,3389进入服务器很快,CPU 内存都是几乎为0. 想到WINDOWS下使用的是APACHE,并 ...

  8. windows下修改apache并发数

    还没有尝试 修改apache的最大连接数,方法如下: 步骤一 先修改 /path/apache/conf/httpd.conf文件. # vi httpd.conf 将“#Include conf/e ...

  9. 脚本自动封掉并发数过高的 IP

    防止扫描器对服务器恶意扫描,可以对 iptables 规则做了比较严格的配置. 以下配置可作为参考: #lo -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j A ...

随机推荐

  1. httprunner学习21-extentreports页面样式无法加载问题(已解决)

    前言 最近有小伙伴反应使用httprunner的extentreports报告时,打开的页面样式全部丢失了,原本高大上的报告变成了丑八怪. 顿时心都凉了一大截,要是让领导看到了,这个月领导不给加鸡腿了 ...

  2. react 沉思录

    react = Virtual DOM + component + data flow + jsx 核心是Virtual DOM结构的状态维护.渲染机制及UI系统的DOM组织功能: 基于Virtual ...

  3. linux 查看硬盘使用情况

    在windows系统中,我们可以很容易的查看磁盘的使用情况,在linux系统中,我们可以使用命令来查看磁盘使用情况. 1.df命令 作用:用来查看硬盘的挂载点,以及对应的硬盘容量信息.包括硬盘的总大小 ...

  4. jQuery中判断数组

    判断数组里面是否包含某个元素可以使用 $.inArray("元素(字符串)",数组名称) 进行判断 ,当存在该元素(字符串)时,返回该元素在数组的下标,不存在时返回 -1 jQ=& ...

  5. 运行银联支付系统demo

    1.Demo下载 下载地址:https://open.unionpay.com/tjweb/acproduct/list?apiservId=448 2.导入项目 注意:非maven项目,在导入ide ...

  6. MongoDB shell 5 游标方法

    方法名 描述 cursor.snapshot()   cursor.itcount()   cursor.batchSize()   cursor.pretty()   cursor.hint()   ...

  7. python函数 | 生成器

    生成器本质上是迭代器,包含__iter__和__next__功能 生成器的产生方式: 1,生成器函数构造. 2,生成器推导式构造. 3,数据类型的转化. 通过构造生成器函数,就是将函数中的return ...

  8. Hibernate的批量查询——原生sql查询

    1.查询所有的学生信息: (1)查询结果中,一条信息放入到一个数组中,从list集合中取出数组,并对数组进行遍历. public class GeneratorTest { public static ...

  9. AsyncAPI 几个方便的工具

    AsyncAPI 类似openapi 也提供了一些周边工具 editor 类似openapi 的,但是目前官方已经不推荐使用了,推荐使用playground,以下是构建一个容器镜像 clone 代码 ...

  10. BDE在 win7 找不到存储过程myproc;1

    BDE在 win7 找不到存储过程myproc;1 在odbc配置的完成的最后一步,有个使用ANSI引用的标识符,勾去掉试试 不行的话还有个执行字符串数据翻译勾去掉试试