nginx对相应主机进行限并发数和限速

先定义一个“limit”的记录区
limit_zone limit $binary_remote_addr 10m;

location /images/ {           #定义在images目录下
limit_conn limit  8;      #指定一个会话最大的并发连接数。当超过指定的最大并发连接数时,服务器
将返回 "Service unavailable" (503)。
limit_rate_after  3m;     #在下载到3m之前不限速。
limit_rate  100k;         #单个线程最大下载速度,单位KB/s,注意:这里是对连接限速,而不是对IP
限速。如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate x 2。
}

limit_zone
语法:limit_zone zone_name $variable the_size
默认值:no
作用域:http
本指令定义了一个数据区,里面记录会话状态信息。
$variable 定义判断会话的变量;the_size 定义记录区的总容量。

例子:
limit_zone   limit  $binary_remote_addr  10m;
定义一个叫“limit”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。
您可以注意到了,在这里使用的是 $binary_remote_addr 而不是 $remote_addr。
$remote_addr 的长度为 7 至 15 bytes,会话信息的长度为 32 或 64 bytes。而 $binary_remote_addr 的长度为 4 bytes,会话信息的长度为 32 bytes。
当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)。

您可以选择一种方式赞助本站

支付宝转账赞助

支付宝扫一扫赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情