接入层限流 — Nginx的limit_conn与limit_req

目录

一、Nginx限流

二、limit_conn使用

1. 相关配置

2. 执行过程

三、limit_req使用 

1. 相关配置

2. 执行过程

四、参考资料


一、Nginx限流

        OpenResty中的Nginx自带两个限流模块:计数器算法实现的连接数限流模块ngx_http_limit_conn_module和漏桶算法实现的请求数限流模块ngx_http_limit_req_module。

        limit_conn用来对某个key总的网络连接数进行限流,如客户端的IP、域名维度限流;limit_req用来对某个key的请求数进行限流。limit_req有两种处理用法:delay(平滑模式)和nodelay(允许突发模式)。

二、limit_conn使用

1. 相关配置

http {
   
	......
	
	#某个key总的连接数限流
	limit_conn_zone $binary_remote_addr zone=addr:10m;
	limit_conn_log_level error;
	limit_conn_status 503;
	
	......

    server {
        ......

        location / {

			......
			
			limit_conn addr 1000;
			
            ......
        }
    }

}

limit_conn_zone:定义某个key指定内存区域名及大小,这里$binary_remote_addr客户端IP地址,$server_name服务器名称。

limit_conn:指定内存区域名(对应limit_conn_zone)及该key的总连接数。

limit_conn_log_level:被限流后的日志级别,默认error。

limit_conn_status:被限流后的响应状态,默认503。

注意:可以配置被限流的页面;区域内存不足,会一直被限流

2. 执行过程

三、limit_req使用 

1. 相关配置

http {
   
	......
	
	#某个key总的请求数限流
	limit_req_zone $binary_remote_addr$uri zone=one:10m rate=1r/s;
	limit_conn_log_level error;
	limit_conn_status 503;
	
	......

    server {
        ......

        location / {

			......
			
			limit_req zone=one burst=5 nodelay;
			
            ......
        }
    }

}

limit_req_zone:定义某个key指定内存区域名及大小,处理请求速率为100请求/秒。这里$binary_remote_addr客户端IP地址,$server_name服务器名称。

limit_req:指定内存区域名(对应limit_req_zone)及该key的最大突发请求数、是否延迟处理。

limit_conn_log_level:被限流后的日志级别,默认error(与limit_conn相同)。

limit_conn_status:被限流后的响应状态,默认503(与limit_conn相同)。

注意:可以配置被限流的页面;区域内存不足,会一直被限流

2. 执行过程

四、参考资料

limit_req模块详解:Nginx http_limit_req模块详解 - 雨凝

limit_req算法解析:Nginx下limit_req模块burst参数超详细解析_博观而约取,厚积而薄发-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值