Nginx之网络限制(流量,并发数)
1. 流量控制
1. 模块: ngx_http_core_module
limit_rate 限制单个连接的下载速度,如果是两个连接,下载速度*2
上下文: http server location location中的if字段
用法: limit_rate rate rate单位字节/秒,0为关闭限速
例子: limit_rate 200k;
limit_rate_after
上下文: http server location
用法: limit_rate_after size;
例子: limit_rate_after 1000k; 超过1MB限速,否则不限速。
server {
listen 80;
server_name ops.yangjianbo.com;
location /ops/{
root /home/www/html;
limit_rate_after 5m;
limit_rate 20k;
}
}
注意: 如果只有limit_rate表示只限速,如果有limit_rate又有limit_rate_after,表示超过limit_rate_after后面的size后,开始限速,没超过size之前不限速
2. 并发连接数限制
1. 模块: ngx_http_limit_conn_module
limit_conn_zone 设置区域
上下文:http
语法: limit_conn_zone key zone=name:size;
key可以是字符串,nginx自带变量或字符串和变量的组合,如:$binary_remote_addr,$server_name。
name为内存区域的名称
size为记录区的总容量
例子:
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:300k;
limit_conn 设置最大连接数,当超过最大连接数时,服务器会返回503.
上下文:http server location
语法: limit_conn zone number;
例子:
limit_conn conn_limit_per_ip 2;
限制虚拟主机总连接数
limit_conn_zone $server_name zone=perserver:10m;
limit_conn perserver 2; 放在server块中
3. 请求数限制
模块: ngx_http_limit_req_module
参数:
limit_req_zone 用于共享内存区域
上下文: http
语法: limit_req_zone key zone=name:size rate=rate;
例子:
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:300k rate=2r/s;
limit_req
上下文: http server location
语法: limit_req zone=name [burst=number] [nodelay];
例子:
limit_req zone=req_limit_per_ip burst=5;
说明: 每秒2个请求,5个等待,多的都会返回503.

浙公网安备 33010602011771号