Nginx 配置对流量、连接和请求的限制

本文详细介绍了Nginx中三种限速配置方法:通过limit_rate限制单个连接的速度,通过limit_conn_module限制单个IP的同时连接数,以及通过limit_req_module限制单位时间内来自单个IP的请求次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先给出配置段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
http {
 
    limit_conn_zone $binary_remote_addr zone=one:10m;
 
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
 
    ...
 
    server {
 
    ...
 
        location /download/ {
 
         limit_rate 500k;
 
         limit_rate_after 50m;
 
         limit_conn one 1;
 
       limit_req zone=one burst=5;<br>    }<br><br>  ...
}

  

 

1、 limit_rate指令

  limit_rate开启nginx限速功能,可配置在httpserverlocationif in location配置段。 limit_rate 500k表示限速500kB每秒,限速对象是单个连接,因此如果一个IP有多个连接的话,每个连接都是限速500klimit_rate还有在特定情况下开启限速的功能。

limit_rate_after和 limit_rate配合使用表示在下载的文件大小达到设定数后开启限速效果(逐渐降速)。同样针对于单个连接。设定大小设置太小的话可能效果不准确。

 

2Module ngx_http_limit_conn_module 模块

  limit_conn_zone $binary_remote_addr zone=one:10m模块开启对单个ip、单个会话同时存在的连接数的限制。这里定义一个记录区oneone的总容量是10m,该记录区针对于变量$binary_remote_add生效,这里是针对单个IP生效。该模块只是一个定义,配置在http配置段,需要配合limit_conn指令使用才生效, limit_conn one 1表示该location段使用one定义的 limit_conn_zone ,对单个IP限制同时存在一个连接。

PSlimit_conn_zone0.8版本之前叫

 

与现在有一定的差别。

 

3ngx_http_limit_req_module 模块

   limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s模块开启对单个ip、单个会话在单位时间内请求的限制。这里zonelimit_conn_zone模块一样,rate表示限制的速率,1r/s表示一秒之内最多1次请求,也可以用5r/m,表示一分钟之内最多5次请求。limit_req_zone同样配置在http配置段。与limit_req指令配合使用才生效。limit_req zone=one burst=5表示该location段使用one定义的limit_req_zone,如果请求数超过 rate=1r/s,剩下的请求将被延迟处理,如果请求数超过burst定义的数量,多余的请求则直接返回503错误。

如果开启nodelay,则超过rate=1r/s的请求直接返回503,不再延迟处理。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值