Nginx限制最大连接数、请求速率、下载速度

参数说明
$binary_remote_addr是同一客户端IP IP地址用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话;
$server_name是同一server最大并发数;(虚拟主机如:www.aaa.com就是一个虚拟主机)
limit_conn_zone 用来限制同一时间连接数,即并发限制,限制并发连接数;
limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket” ,限制下载速率;
limit_rate 用来限制下载速度

控制nginx并发连接数
定义内存区
limit_conn_zone key zone=name:size;
上下文http内
设置共享内存区域key可以是字符串,nginx自有变量或前两个组合,如$binary_remote_addr,$server name name为内存区域的名称,size为内存区城的大小。

在server标签的location内做限制
limit_conn zone number;
zonename是定义的内存区域名称 number是指最大连接数,当超过最大连接数,服务器返回503错误

例:
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
}
location / {
limit_conn addr 10; #限制单ip的最大并发连接数为10
}

以下功能可以用于服务器下载(限制BT下载)
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
}
location /download/ {
limit_conn addr 1;
}

限制虚拟主机总连接数
limit_conn_zone $server_name zone=perserver:10m; #http标签中
limit_conn perserver 100; #location标签中
例:
http {
limit_conn_zone $server_name zone=perserver:10m;
}
location / {
limit_conn perserver 100; #限制同一server(虚拟主机)最大并发数
}

控制nginx用户请求速率
上下文http内
limit_req_zone $binary_remote_addr zone=reqlist:10m rate=1r/s;
以请求的客户端ip作为key值,内存区域命名为reqlist,分配10m内存空间,访问速率限制每秒1次请求request

在server标签的location内做限制
limit_req zone=reqlist burst=5 nodelay;
使用前面定义的名为reqlist的内存空间,队列值为5,即可以有5个请求排队等待。nodelay字面的意思是不延迟,具体说是对用户发起的请求不做延迟处理,而是立即处理. 真正对限流起作用的配置就是rate=1r/s和burst=5这两个配置
例:限制远端同一个IP地址每秒访问次数
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/s;
}
location / {
limit_req zone=one burst=5 nodelay;
}

例2 限制一个虚拟主机(如www.aaa.com)每秒允许被访问的速率
http {
limit_req_zone $server_name zone=one:10m rate=30r/s;
}
location / {
limit_req zone=one burst=5 nodelay;
}

控制nginx用户下载速度
location ^~ /videos/ {

limit_rate_after 10m;
limit_rate 150k;

}

第一个指令limit_rate_after,从下载到你指定的文件大小之后开始限速,然后第二个指令limit_rate,设置最高下载速度。
要注意的是上面的设置是限制的是每一个连接的下载速度,所以如果一个用户打开了多个连接下载,那么它的下载速度就能达到单个连接的限速乘以连接数。不过我们可以使用limit_conn_zone和limit_conn这两个指令限制其连接数。

限制同一个ip的连接数和下载速度 用于服务器下载(限制BT下载)
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
}
location /download/ {
limit_conn addr 1;
limit_rate_after 10m;
limit_rate 150k;
}

Nginx服务器中,可以通过配置limit_conn模块来限制最大连接数。[2] 这个模块可以控制并发连接数量,以防止服务器过载。在配置文件中,可以使用limit_conn_zone指令来定义一个共享内存区域,然后使用limit_conn指令来指定最大连接数。通过这种方式,可以保证服务器不会超过设定的连接数限制。 另外,在Nginx服务器中,可以通过配置limit_req模块来限制请求速率。 这个模块可以控制每个IP地址或每个请求的访问频率,以防止恶意请求或过度的负载。在配置文件中,可以使用limit_req_zone指令来定义一个共享内存区域,然后使用limit_req指令来指定请求速率限制。通过这种方式,可以保证服务器在高负载情况下仍能正常工作。 需要注意的是,具体的最大连接数取决于服务器的硬件配置和性能。通常情况下,使用阿里云ecs c6规格族服务器可以提供足够的性能支持大量的并发连接。 但是,如果需要更高的连接数或更高的性能,可以根据需求升级服务器或增加后端服务器的量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [nginx支持的最大连接数,试验告诉你](https://blog.csdn.net/weixin_47402482/article/details/127606317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Nginx服务器中限制连接数限制请求的模块配置教程](https://download.csdn.net/download/weixin_38713801/12902361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [查看nginx最大连接数及当前最大连接数](https://blog.csdn.net/newxwj/article/details/107018245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值