Nginx限流

作者: Alex_Paul | 来源:发表于2019-12-16 15:48 被阅读0次

Nginx限流模块包含

  • 连接数限流模块 ngx_http_limit_conn_module
  • 漏桶算法实现的请求限流模块 ngx_http_limit_req_module
  1. ngx_http_limit_conn_module
    我们经常会遇到这种情况,服务器流量异常,负载过大等等。对于大流量恶意的攻击访问,会带来带宽的浪费,服务器压力,影响业务,往往考虑对同一个ip的连接数,并发数进行限制。
    ngx_http_limit_conn_module 模块来实现该需求。该模块可以根据定义的键来限制每个键值的连接数,如同一个IP来源的连接数。并不是所有的连接都会被该模块计数,只有那些正在被处理的请求(这些请求的头信息已被完全读入)所在的连接才会被计数。
    我们可以在nginx_conf的http{}中加上如下配置实现限制:
# 限制每个用户的并发连接数,取名one
limit_conn_zone $binary_remote_addr zone=one:10m;

# 配置记录被限流后的日志级别,默认error级别
limit_conn_log_level error;
# 配置被限流后返回的状态码,默认返回503
limit_conn_status 503;

然后在server{}里加上如下代码:

#限制用户并发连接数为1
limit_conn one 1;

另外刚才是配置针对单个IP的并发限制,还是可以针对域名进行并发限制,配置和客户端IP类似。

#http{}段配置
limit_conn_zone $ server_name zone=perserver:10m;
#server{}段配置
limit_conn perserver 1;
  1. ngx_http_limit_req_module
    上面我们使用到了ngx_http_limit_conn_module 模块,来限制连接数。那么请求数的限制该怎么做呢?这就需要通过ngx_http_limit_req_module 模块来实现,该模块可以通过定义的键值来限制请求处理的频率。
    特别的,可以限制来自单个IP地址的请求处理频率。限制的方法是使用了漏斗算法,每秒固定处理请求数,推迟过多请求。如果请求的频率超过了限制域配置的值,请求处理会被延迟或被丢弃,所以所有的请求都是以定义的频率被处理的。
    在http{}中配置
#区域名称为one,大小为10m,平均处理的请求频率不能超过每秒一次。
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

在server{}中配置

#设置每个IP桶的数量为5
limit_req zone=one burst=5;

上面设置定义了每个IP的请求处理只能限制在每秒1个。并且服务端可以为每个IP缓存5个请求,如果操作了5个请求,请求就会被丢弃。

参考文档

https://colobu.com/2015/10/26/nginx-limit-modules/
朱小厮的博客

相关文章

  • 秒杀系统设计思路

    一、限流与降级 客户端限流 按钮置灰 js控制每秒只能发送一个请求 站点层限流 1. Nginx限流 Nginx官...

  • 服务限流

    保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流可是Nginx接入层面的限流,也可以是服务层面的限流。 ...

  • 限流算法

    前言 保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流包括Nginx层面的限流以及业务代码逻辑上的限流。...

  • Nginx限流

    有好几个业务要访问ES集群。有些业务比较紧急,那么它们的请求应该优先处理,而有些业务对响应时间的要求不是那么在意,...

  • Nginx限流

    Nginx限流模块包含 连接数限流模块 ngx_http_limit_conn_module 漏桶算法实现的请求限...

  • nginx限流

    一、limit_conn_zone 其中limit_conn one 10既可以放在server层对整个serve...

  • nginx限流

    请求:for i in `seq 1 10`; do curl http://127.0.0.1:8089/inf...

  • NGINX限流

    Nginx 限流 注意: 通常情况下,将限速模块用于转发到后端接口的时候,每个IP每秒请求的次数可以设置的小一些,...

  • Tengine限流

    Tengine限流 安装 Tengine Tengine完全兼容Nginx,是基于nginx-1.18版本基础之上...

  • 【NGINX入门】11.Nginx限流算法及配置实践

    1. 摘要 本文介绍Nginx限流算法及限流配置实践及测试验证。 2. 限流算法 高并发系统有三把利器:缓存、降级...

网友评论

    本文标题:Nginx限流

    本文链接:https://www.haomeiwen.com/subject/dykdnctx.html