我是靠谱客的博主 醉熏冰淇淋,最近开发中收集的这篇文章主要介绍接入层限流 — 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博客

最后

以上就是醉熏冰淇淋为你收集整理的接入层限流 — Nginx的limit_conn与limit_req的全部内容,希望文章能够帮你解决接入层限流 — Nginx的limit_conn与limit_req所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部