zoukankan      html  css  js  c++  java
  • (转)Linux下apache限速和限制同一IP连接数的实现

    单位有一台DELL的服务器,4核双CPU,4G内存,1TB的存储空间,闲来无事,申请了域名http://www.zxzy123.cn,做了个网站,本以为用这样的配置做个下载站是绰绰有余了,没想到上线没几天,忽然发现有时打不开网页或很慢,惨了,受攻击了,心里想,查看记录,没发现什么问题,带宽也没用尽,ftp很快,关闭了下载链接,发现apache又很快了,问题应该就在这里,可能是用户开太多线程下载大软件了(我的好多软件都是GB级的),如何解决这个问题呢?总不能不让用户下载吧,说干就干,上网找了些资料,发现了两个很好的apache模块: mod_bw 和 mod_limitipconn ;分别是限速和限制IP连接数的模块。下面就是具体的操作步骤。
    一、安装准备
    用 whereis apxs 命令先确定你的系统是否有apxs文件及其路径,如果没有请安装(redhat linux自带的apache就可能没安装)
    一、安装限速模块
    1、下载:wget http://legacy.ivn.cl/files/source/mod_bw-0.92.tgz
       如果以上地址失效,请自行到  http://ivn.cl/category/apache/查找
    2,安装:
    #tar -xvf mod_bw-0.92.tgz
    #cd mod_bw
    #/usr/local/apache2/bin/apxs -i -c -a mod_bw.c
    3、OK,限速模块安装完毕,一会我们再回过头来配置它
    二、安装限制IP连接数模块
    1、下载:wget http://dominia.org/djao/limit/mod_limitipconn-0.23.tar.bz2
    2、安装
    #tar -jxvf mod_limitipconn-0.23.tar.bz2
    #cd mod_limitipconn-0.23
    #vi Makefile
    修改:apxs = “/usr/local/apache2/bin/apxs” # 这里是自己apache的apxs路径,加载模块
    或者
    #/usr/local/apache2/bin/apxs -i -c -a mod_limitipconn.c  来加载模块
    #make
    #make install
    3、OK,IP连接数限制模块安装完成
    三、以下配置httpd.conf文件
    1、确定是否有以下两句,如果有,如上面的安装是成功的,如果没有请手动添加试试(
    不一定完成相同)
    LoadModule limitipconn_module modules/mod_limitipconn.so
    LoadModule bw_module          modules/mod_bw.so
    2、找到ExtendedStatus On,如果前面有#号的话要把#号去掉,如果没有这个选项需要自己手工添加
    3、配置限速,添加以下语句(#后面的中文字全部不要输,这里是说明用的),配置限速,可根据控制的范围放在全局域或放在虚拟主机域
       #这个 module 预设是关闭的,要将他开启才能够使用
       BandwidthModule On
       #这个 module 预设不会过滤每个需求,如果您开启他,他将处理过滤每个需求
       ForceBandWidthModule On
       #最大带宽,这个有两个参数。第一个是限制来源的位置,也就是该位置受限制。他可以是完整的 hostname、网域名称或 IP。可搭配遮罩使用,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0,all代表所有 。另一个参数是限制的速率,以 bytes 每秒为单位;假如为 0,则不受限制。
       Bandwidth all 10000 #限速10K
       #最小带宽,一般不限制,以下为不限制
       MinBandwidth all -1
       #大文件下载限制,顾名思义,这设定是专门用来限制大型档案的。第一个参数是指文件名,可以使用 * 代表全部。也可使用 .rar 等,
    第二个参数单位是 kbyte,只要超过这个 Size 就被规范在这个设定的限速中,最后一个参数就是被限制的速率,单位是byte/s。 
       LargeFileLimit * 500 10240
    4、配置限制IP连接数,添加以下语句(#后面的中文字全部不要输,这里是说明用的),配置限速,可根据控制的范围放在全局域或放在虚拟主机域
       <IfModule mod_limitipconn>
         <Location /> #需要控制的路径,相对于网站根目录
           MaxConnPerIP 3 #限制的线程数
           NoIPLimit image/* #对图片文件不做限制 如果仅限制某几种文件请用以下语句,本语句就不要
           OnlyIPLimit audio/mpeg video/* application/x-rar #只对音频视频文件,自定义 minetype文件起作用
         </Location>
       </IfModule>
    5、保存httpd.conf,重启httpd,一切OK。

  • 相关阅读:
    Redis未授权访问写Webshell和公私钥认证获取root权限
    Zabbix 2.2系列注入+getsehll
    XSS中的同源策略和跨域问题
    权限维持-wmi事件
    burp插件之xssValidator
    MySQL模拟Oralce闪回操作
    误删除innodb ibdata数据文件
    pt-heartbeat使用实践
    MySQL slave状态之Seconds_Behind_Master【转】
    如何快速REPAIR TABLE
  • 原文地址:https://www.cnblogs.com/greywolf/p/3450314.html
Copyright © 2011-2022 走看看