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