Nginx和Apache限制IP并发数

Nginx限制下载速度

# 如果想设置用户下载文件的前10m大小时不限速,大于10m后再以128kb/s限速可以增加以下配内容,修改nginx.conf文件
location /download {
       limit_rate_after 10m;
       limit_rate 128k;
 }  

Nginx限制并发数

注:limit_zone只能定义在http作用域,limit_conn可以定义在http server location作用域

http {
  limit_conn_zone $binary_remote_addr zone = conn:10m;
  #定义一个名为conn的limit_conn_zone用来存储session,大小是10M内存,1M能存储16000个状态;
  #$binary_remote_addr是限制同一客户端ip地址;
  #$server_name是限制同一server最大并发数;

  limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
  #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,1M能存储16000个状态,以$binary_remote_addr为key,
  #限制平均每秒的请求为20个,rate的值必须为整数,如果限制两秒钟一个请求,可以设置成30r/m

  server{

       location {
           limit_conn conn 20;                           
           #limit_conn为限制并发连接数;

           limit_rate 500k;             
           #limit_rate为限制下载速度;

           limit_req zone=allips burst=5 nodelay;          
           #限制每ip每秒不超过20个请求,漏桶数burst为5,brust的意思是,如果第1秒、2,3,4秒请求为19个,第5秒的请求为25个是被允许的。
           #但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
           #nodelay,如果不设置该选项,严格使用平均速率限制请求数,第1秒25个请求时,5个请求放到第2秒执行,设置nodelay,25个请求将在第1秒执行。
       }
    }
}

 

Apache限制IP连接数

一、安装mod_limitipconn,修改配置文件,httpd.conf:

ExtendedStatus On  
LoadModule limitipconn_module modules/mod_limitipconn.so  
  
<IfModule mod_limitipconn.c>  
    <Location />                                              #对应根目录  
          MaxConnPerIP 6                                  #最大并发数  
          NoIPLimit image/*                              #对图片不做限制  
    </Location>  
    <Location /download>                             #对根目录下面的download  
         MaxConnPerIP 1                                    #最大并发数为1  
    </Location>  
</IfModule> 

 

二、安装mod_bandwidth,可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。

在httpd.conf 加上 LoadModule bw_module modules/mod_bw.so

然后打开 httpd-vhosts.conf:

listen 10004  
NameVirtualHost *:10004  
<VirtualHost *:10004>  
 DocumentRoot "/data/www/test"  
 ServerName *:10004  
 BandwidthModule On  
 ForceBandWidthModule On  
 Bandwidth all 1024000  
 MinBandwidth all 50000  
 LargeFileLimit * 500 50000  
 MaxConnection all 6  
 ErrorLog "/home/user/apache/www.test.com-error.log"  
 CustomLog "/home/user/apache/www.test.com-error.log" common  
</VirtualHost> 

解压bandwidth的压缩文件后,里面有一个mod_bw.txt有详细的说明和实例,下面是部分参数说明:

1. BandWidth localhost 0                                      #对localhost不限速
2. BandWidth 192.168.1.5 102400                       #对192.168.1.5限速为100KB

3. BandWidth “u:^Mozilla(.*)” 10240              #用mozilla时限速10KB
4. BandWidth “u:wget” 102400                      #如果用wget下载时限速10KB

5. MinBandWidth all -1                                      #保证每个客户端最高速度可达10KB
6. LargeFileLimit .jpg 100 10240                      #jpg文件超过100KB,限速10KB

7. #下面的510挺好,如果不设置,apache自己会报错,就根报404差不多,页面非常的丑
ErrorDocument 510 /exceed_speed.html
BandWidthError 510

8. MaxConnection all 10                                       #所有ip最大连接数为10
9. MaxConnection 192.168.1.5 5                         #192.168.1.5最大连接数为5

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值