Apache限制IP并发数和流量控制的方法

本文章来给各位同学总结一下APACHE中限制IP连接数与IP并发数和流量控制实现方法,如果只限制连接数据我们可以直接使用limit,如果要限制其它的需要使用其它第三方模块了

使用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

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配置文件:

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:

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 就可以:

#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
(0)

相关推荐

  • Apache添加多端口及实现单ip多端口映射的方法

    先给大家说下apache添加多端口的方法,具体步骤如下所示: Apache\conf 目录下 添加端口监听 Vhost.conf简单写写 下面是有关apache实现单ip多端口映射的内容 我使用一个apache服务器.在我的apache根目录下有这么几个网站,如Test.Child这两个文件夹,也就是两个网站.我想这样,当我访问http://localhost的时候就访问Test,当我访问http://localhost:8080的时候就访问Child. 我们需要配置apache.讲apache

  • IIS、Apache、Nginx下用IE下载apk文件变成zip的解决办法

    下面我们来说下具体的解决方法 一.IIS的解决方案 我们只需要将服务器中的 MIME类型改为:  application/vnd.android.package-archive 就可以了 二.APACHE的解决方案 在Apache安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文件的MIME类型为 application/vnd.android.package-archive 即可: 复制代码 代码如下: application/vnd.android.pa

  • Apache 获取真实ip的配置的实现方法

    Apache 获取真实ip的配置的实现方法 最近因为用了web应用防火墙产品(阿里云的),所以获取不到用户的真实ip. 经过多方搜集尝试,方案如下: apache2.4提供了自带的remoteip模块可以实现获取真实ip. 我的环境是:ubunt16.04 Apache2.4.18 cd /etc/apache2.mods-available 新建配置文件 vim remoteip.conf 输入: RemoteIPHeader X-Forwarded-For RemoteIPProxiesHe

  • Apache服务器一个IP多个站点的配置方法示例

    在日常的网站发布中很多情况下都无法做到一个IP对应一个站点,在IP4的情况下IP的资源是相对有限的.然而作为最流行的Apache自然也考虑到这种情况,那么接下来看看apache服务器怎么配置一个IP多个站点. 在httpd.conf中找到 "# Virtual hosts",并添加如下行 复制代码 代码如下: ServerName 你的域名 HostNameLookups off 例子 NameVirtualHost 192.168.1.104 <VirtualHost 192.

  • 利用Apache服务器屏蔽广告及IP段的一般方法

    屏蔽广告 1.在hosts文件里对需要屏蔽广告的网站加上host 例如: #屏蔽百度视屏广告: 127.0.0.1 a.baidu.com 127.0.0.1 baidutv.baidu.com 127.0.0.1 bar.baidu.com 127.0.0.1 c.baidu.com 127.0.0.1 cjhq.baidu.com 127.0.0.1 cpro.baidu.com 127.0.0.1 drmcmm.baidu.com 127.0.0.1 e.baidu.com 127.0.0

  • apache服务器一个ip(如:127.0.0.1)和多个域名(虚拟主机)的绑定

    今天在学习PHP时,有这样的一个需求:一个ip(如:127.0.0.1)和多个域名(虚拟主机)绑定,以下是我的解决方案: 解决方案一:通过端口来区分不同的虚拟主机 ①按照绑定一个站点的方法做好准备 1. 先开发好自己的网站(d:/myblog(存放在D盘的myblog目录下)) 2. 配置httpd.conf文件(存放在apache安装目录的conf文件夹中),启用httpd-vhosts.conf(把第二行前面的#号去掉即可). 3. 配置httpd-vhosts.conf文件(存放在apac

  • Apache启用GZIP压缩网页传输方法

    首先我们先了解Apache Gzip的相关资料. 一.gzip介绍 Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小.这取决于文件中的内容. 利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器.这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度. 网页加载速度加快的好处不

  • Apache限制IP并发数和流量控制的方法

    本文章来给各位同学总结一下APACHE中限制IP连接数与IP并发数和流量控制实现方法,如果只限制连接数据我们可以直接使用limit,如果要限制其它的需要使用其它第三方模块了 使用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

  • Nginx限制IP并发数与下载速度的方法

    在Nginx服务器上进行一些常规设置,来限制其并发数及会话空间等. nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1,添加limit_zone 这个变量只能在http使用 代码示例: 复制代码 代码如下: vi /usr/local/nginx/conf/nginx.conflimit_zone one $remote_addr 10m; 2,添加limit_conn 这个变量可以在http, server, location使用只限制一个站点,所以添加到server里面

  • nginx与apache限制ip并发访问 限制ip连接的设置方法

    nginx nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1.添加limit_zone 这个变量只能在http使用 vi /usr/local/nginx/conf/nginx.conf limit_zone one $binary_remote_addr 10m; 2.添加limit_conn 这个变量可以在http, server, location使用 我只限制一个站点,所以添加到server里面 vi /usr/local/nginx/conf/host/gaoji

  • 在apache下限制每个虚拟主机的并发数!!!!

    来自http://www.allabc.com论坛:http://seecee.dev-c.nl/forumdisplay.php?fid=4 下载模块: http://www.nowhere-land.org/prog ... st_limit-0.4.tar.gz 官方网址: http://www.nowhere-land.org/programs/mod_vhost_limit/ 安装: apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_v

  • nginx并发数限制limit_conn基本语法

    目录 基本语法 实验 nginx配置 使用jmeter测试 安装Jmeter 新建 Thread Group 新建 HTTP Request 添加 View Results in Table 执行并发请求 总结 基本语法 当服务器面临高并发访问时,若连接数没有得到恰当的控制,则服务器的性能将受到影响,甚至可能导致崩溃.Nginx 的 limit_conn 指令是一个非常重要的服务器安全设置,可用于限制和控制并发连接数量. limit_conn 指令的基本语法为: limit_conn connl

  • python获取外网IP并发邮件的实现方法

    第一步:通过ip138来爬取外网ip 第二步:通过python的smtplib模块和email来发送邮件,具体用法去网上搜索, 下面是代码示例: #!/usr/bin/env python #coding:utf-8 import urllib2 import re import smtplib from email.MIMEText import MIMEText from email.Header import Header #################################

  • python统计日志ip访问数的方法

    本文实例讲述了python统计日志ip访问数的方法.分享给大家供大家参考.具体如下: import re f=open("/tmp/a.log","r") arr={} lines = f.readlines() for line in lines: ipaddress=re.compile(r'^#(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))') match=ipaddres

  • 你的服务器IIS最大并发数有多少?

    测试系统Window 2003 Server ,IIS 6.0 ,ASP.Net 3.5 sp1 Dual 1.8双核,2G内存,14G虚拟内存. 为了探寻IIS的最大并发数,先要做几个假设. 1.假设最大并发数就是当前的连接数.意思是当前能承受最大的连接,那么就表明最大的并发. 2.假设IIS应用程序池处于默认状态,更改设置将会对最大连接数产生影响. 做完假设,现在做限制,设置站点保持HTTP连接,超时设置成0,就是不会超时.在站点请求的default.aspx页面设置线程Thread.Sle

  • golang实现并发数控制的方法

    golang并发 谈到golang这门语言,很自然的想起了他的的并发goroutine.这也是这门语言引以为豪的功能点.并发处理,在某种程度上,可以提高我们对机器的使用率,提升系统业务处理能力.但是并不是并发量越大越好,太大了,硬件环境就会吃不消,反而会影响到系统整体性能,甚至奔溃.所以,在使用golang提供便捷的goroutine时,既要能够实现开启并发,也要学会如果控制并发量. 开启golang并发 golang开启并发处理非常简单,只需要在调用函数时,在函数前边添加上go关键字即可.如下

  • Python统计时间内的并发数代码实例

    这篇文章主要介绍了Python统计时间内的并发数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python实现并发的手段: 1.操作系统提供:进程.线程: 2.编程语言提供:协程:用户空间的调度(py3): # coding:utf-8 # 1.导入模块 # datatime模块用于定义时间及时间的加减操作 # MySQLdb模块用于Python2.0连接数据库,Python3.0连接数据库使用pymysql # xlwt模块是exc

随机推荐