限流

限制传输带宽

1、ngx_http_core_module

2、limit_except

(1)解除限制一个 loaction 内的 HTTP 方法

(2)method 参数可以是下列之一:GET、HEAD、POST、PUT、DELETE、MKCOL、COPY、MOVE、OPTIONS、PROPFIND、PROPPATCH、LOCK、UNLOCK、PATCH

(3)允许 GET 方法,使得 HEAD 方法也被允许

(4)对其他方法的访问,可以通过 ngx_http_access_module、ngx_http_auth_basic_module、ngx_http_auth_jwt_module 模块指令进行限制

(5)请注意,这将限制对除 GET 和 HEAD 以外的所有方法的访问

(6)语法

limit_except method ... { ... }

(7)位置:location

3、limit_rate

(1)限制向客户端传输响应的速率

(2)速率的单位是 bps

(3)零值禁用速率限制

(4)限制是按请求设置的,因此如果一个客户同时打开两个连接,总的速率将是指定限制的两倍

(5)参数值可以包含变量,在速率应该根据某种条件限制的情况下,它可能是有用的

(6)速率限制也可以在 $limit_rate 变量中设置,但是,从 1.17.0 版本开始,不推荐使用这种方法

(7)速率限制也可以在代理服务器响应头的 X-Accel-Limit-Rate 域中设置,可以使用 proxy_ignore_headers、fastcgi_ignore_headers、uwsgi_ignore_headers、scgi_ignore_headers 指令禁用这一功能

(8)语法

limit_rate rate;

(9)默认值

limit_rate 0;

(10)位置:http、server、location、在 location 中的 if

4、limit_rate_after

(1)设置初始量,在该初始量之后,继续向客户端传输的响应将受到速率限制

(2)语法

limit_rate_after size;

(3)默认值

limit_rate_after 0;

(4)位置:http、server、location、在 location 中的 if

 

ngx_http_limit_conn_module

1、限制每个定义的密钥的连接数,特别是来自单一 IP 地址的连接数

2、使用计算器算法

3、不是所有的连接都被计算在内,只有当一个连接有一个正在被服务器处理的请求,并且整个请求头已经被读取时,才会被计算在内

4、limit_conn

(1)设置共享内存区和给定键值的最大允许连接数

(2)当超过这个限制时,服务器将在回复请求时返回错误

(3)在同一时间,每个 IP 地址只允许一个连接

(4)在 HTTP/2 和 SPDY 中,每个并发的请求被认为是一个单独的连接

(5)可以同时有几个 limit_conn 指令。例如,下面的配置将限制每个客户IP对服务器的连接数,同时限制对虚拟服务器的总连接数

(6)当前级别上没有定义 limit_conn 指令时,这些指令会从上一个配置级别继承

(7)语法

limit_conn zone number;

(8)位置:http、server、location

 

ngx_http_limit_req_module

1、限制每个定义的键的请求处理率,特别是限制来自单个 IP 地址的请求的处理率

2、使用漏桶算法

3、limit_req

(1)设置共享内存区域和请求的最大并发数

(2)如果请求率超过为某一区域配置的速率,它们的处理将被延迟,从而使请求以定义的速率被处理

(3)过多的请求会被延迟,直到它们的数量超过最大并发量,在这种情况下,请求会被错误地终止。默认情况下,最大突发事件的大小等于零

(4)如果不希望在限制请求时,延迟过多的请求,应使用参数 nodelay

(5)delay 参数指定了过度请求被延迟的限制,默认值为 0,即所有的过度请求都被延迟

(6)可以同时有几个 limit_req 指令

(7)当前级别没有定义limit_req指令时,这些指令会从上一个配置级别继承

(8)语法

limit_req zone=name [burst=number] [nodelay | delay=number];

(9)位置:http、server、location

 4、limit_req_zone

(1)为一个共享内存区设置参数,该共享内存区将为各种键保存状态。该状态存储了当前过度请求的数量。键值可以包含文本、变量以及它们的组合。具有空键值的请求不被计入

(2)如果区的存储空间用完了,最近使用的最少的状态会被删除。如果在这之后仍不能创建新的状态,则请求将以错误结束

(3)速率是以每秒请求数(r/s)为单位,如果希望速率小于每秒一个请求,则以每分钟请求数(r/m)指定

(4)sync 参数使共享内存区的同步化

(5)语法

limit_req_zone key zone=name:size rate=rate [sync];

(6)位置:http

posted @   半条咸鱼  阅读(208)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示