Nginx模块之limit_conn & limit_req
2024-09-27 20:17:48
limit_conn模块
生效阶段:NGX_HTTP_PREACCESS_PHASE阶段
生效范围:全部worker进程(基于共享内存),进入preaccess阶段前不生效,限制的有效性取决于key的设计:依赖postread阶段的realip模块取到真实ip
指令
limit_req模块
指令
限制发生时向客户端返回的错误码
Syntax: limit_req_status code;
Default: limit_req_status 503;
Context: http, server, location
limit_req 与 limit_conn 配置同时生效时, limit_req有效
Example
http {
geo $limit {
default 1;
10.0.0.0/8 0;
192.168.0.0/64 0;
}
map $limit $limit_key {
0 "";
1 $binary_remote_addr;
}
limit_req_zone $limit_key zone=req_zone:10m rate=5r/s;
server {
location / {
limit_req zone=req_zone burst=10 nodelay;
}
}
}
这个例子同时使用了geo和map指令。geo块将给在白名单中的IP地址对应的$limit变量分配一个值0,给其它不在白名单中的分配一个值1。然后我们使用一个映射将这些值转为key,如下:
如果$limit变量的值是0,$limit_key变量将被赋值为空字符串
如果$limit变量的值是1,$limit_key变量将被赋值为客户端二进制形式的IP地址
两个指令配合使用,白名单内IP地址的$limit_key变量被赋值为空字符串,不在白名单内的被赋值为客户端的IP地址。当limit_req_zone后的第一个参数是空字符串时,不会应用“流量限制”,所以白名单内的IP地址(10.0.0.0/8和192.168.0.0/24 网段内)不会被限制。其它所有IP地址都会被限制到每秒5个请求。
limit_req指令将限制应用到/的location块,允许在配置的限制上最多超过10个数据包的突发,并且不会延迟转发。
最新文章
- Ubuntu 各版本代号简介
- Yocto开发笔记之《网卡配置》(QQ交流群:519230208)
- Linux 前台 和 后台进程 说明
- (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景
- 理解java设计模式之观察者模式
- react-native学习笔记——简单尝试
- 一个简单的基于canvas小游戏
- 8_python连接数据库
- web存储中cookie、session区别
- sql基本
- jq动画设置图片抽奖(修改效果版)
- [20190219]那个更快(11g).txt
- excel导入、导出
- python 内置数据类型之字符串
- mysql字符集问题汇总
- 【Python045-魔法方法:属性访问】
- C#并行编程(4):基于任务的并行
- 【大数据系列】HDFS安全模式
- sql优化实例(用左连接)
- mypwd的实现——20155328