nginx的限速和限制并发连接数、限制请求数

nginx的限速和限制并发连接数、限制请求数
  1. 限速(Rate Limiting): 限速允许你控制对服务器的请求速率,以防止过多的请求影响服务器性能。使用 limit_req_zone 指令定义一个共享内存区域,并在 location 块中使用 limit_req 指令来限制请求速率。

    示例配置:

    nginxCopy codehttp {
    	# 基于客户机的IP地址,每秒产生一个通行证(令牌通算法)
        limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
        server {
            location / {
            	# 限制请求速率,最多同时一个IP发起5次请求
                limit_req zone=one burst=5;
                # 限制文件下载速度为10k/s
                limit_rate 10k;
                # 当文件下载速度达到100k/s时限制他
                # 1m就是1M/s
                limit_rate_after 100k;
                ...
            }
        }
    }
    

    在上述配置中,每秒钟只允许一个请求,并且允许突发(burst)5个请求。这可以有效地限制请求的速率。

    请求报错状态码为503

  2. 限制并发连接数(Limit Connections): 通过限制同时连接到服务器的客户端数量,可以防止服务器过载。使用 limit_conn_zone 指令定义一个共享内存区域,并在 location 块中使用 limit_conn 指令来限制并发连接数。

    示例配置:

    nginxCopy codehttp {
    	# 名为addr,在内存中开辟一个10M的空间来存放用户的连接信息(基于IP)
        limit_conn_zone $binary_remote_addr zone=addr:10m;
        # 基于server(服务器域名)
        limit_conn_zone $server_name zone=perserver:10m;
    
        server {
            location / {
            	# 限制一个IP地址只能同时发起5个并发链接
                limit_conn addr 5;
                # 限制一个月拟主机同时只能发起100个并发连接
                limit_conn perserver 100;
                ...
            }
        }
    }
    

    限制并发连接数,报错时的状态码为503

  3. 限制请求数(Limit Requests): 通过限制在一段时间内允许的最大请求数,可以防止服务器被大量请求过载。使用 limit_req_zone 指令定义一个共享内存区域,并在 location 块中使用 limit_req 指令来限制请求数。

    示例配置:

    nginxCopy codehttp {
        limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
    
        server {
            location / {
                limit_req zone=req_zone burst=20 nodelay;
                ...
            }
        }
    }
    

    在上述配置中,每秒钟最多允许10个请求,允许突发(burst)20个请求,nodelay 参数表示不延迟处理请求。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值