概述
目录
一、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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复