阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx限制并发连接数与下载速度

321次阅读
没有评论

共计 1499 个字符,预计需要花费 4 分钟才能阅读完成。




ngx_http_limit_conn_module 模块用于限制每个定义密钥的连接数,特别是来自单个 IP 地址的连接数。而 ngx_http_core_module 则可以限制下载速度,这两个均是 Nginx 内置模块,不需要额外安装。

ngx_http_limit_conn_module 限制连接数

# 需要写在 http 段内
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
location /download/ {limit_conn addr 10;}
  • $binary_remote_addr : nginx 变量,指的是客户端 IP
  • zone : 域的名字,随便填写,这里设置的是 addr,后面会再次用到
  • 10m : 设置共享内存我的理解是客户端的 IP 会被放入这个内存中,总共享内存不能超过 10M,不知道对不对。
  • limit_conn addr 10 : 限制 addr 这个域的最大连接数为 10

但是在 HTTP/2 中每个并发请求被视为单独的连接,如果网站启用了 HTTP/2 上面的设置就没有作用了,可以继续改进一下。以下配置将限制每个客户端 IP 与服务器的连接数,同时限制与虚拟服务器的连接总数。

# 写在 http 段内
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    #限制 perip 域(客户端 IP)的连接数为 10
    limit_conn perip 10;
    #限制 perserver 域(当前虚拟服务器)的连接数为 100
    limit_conn perserver 100;
}

更多详细说明可参考 Nginx 官方文档:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

ngx_http_core_module 限制下载速度

# 数据达到 100M 后再限制速度(注意:这里指的是单个连接达到 100M)limit_rate_after 100M;
#限制单个连接速度为 10k/s
limit_rate 10k;
  • limit_rate_after : 指的是请求的数据达到指定大小后才开始限速(这里设置的是 100M)
  • limit_rate:设置单个连接限速值,这里设置的是 10k/s,如果限制同一 IP 最大连接数为 10 的话,那么总的下载速度不能超过 100k/s

更多说明参考 Nginx 官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate

同时限制连接数和下载速度

将上面的配置整合一下,我们既要限制单 IP 的最大连接数,也需要限制下载速度。

# 写在 http 段内
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

#写在 server 段内
limit_conn perip 10;
limit_conn perserver 100;
limit_rate_after 100M;
limit_rate 10k;

上面配置的含义是限制单个 IP 最大连接数为 10 个,同时限制单个虚拟服务器的连接总数为 100 个。当请求的数据达到 100M 后(指单个连接达到 100M)限制连接速度为为 10k/s,如果产生了 10 个连接,最大速度不能超过 100k/s

写在最后

配置修改后建议用 nginx -t 先检查语法,确保没有问题,别忘记重载 Nginx 使其生效。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1499字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中