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个数据包的突发,并且不会延迟转发。

最新文章

  1. Ubuntu 各版本代号简介
  2. Yocto开发笔记之《网卡配置》(QQ交流群:519230208)
  3. Linux 前台 和 后台进程 说明
  4. (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景
  5. 理解java设计模式之观察者模式
  6. react-native学习笔记——简单尝试
  7. 一个简单的基于canvas小游戏
  8. 8_python连接数据库
  9. web存储中cookie、session区别
  10. sql基本
  11. jq动画设置图片抽奖(修改效果版)
  12. [20190219]那个更快(11g).txt
  13. excel导入、导出
  14. python 内置数据类型之字符串
  15. mysql字符集问题汇总
  16. 【Python045-魔法方法:属性访问】
  17. C#并行编程(4):基于任务的并行
  18. 【大数据系列】HDFS安全模式
  19. sql优化实例(用左连接)
  20. mypwd的实现——20155328

热门文章

  1. kubernetes基本概念 pod, service
  2. 动图图解!怎么让goroutine跑一半就退出?
  3. 对于VS2013使控制台暂停的方法
  4. CG Kit探索移动端高性能渲染
  5. I.MX启动方式和头部
  6. 【JavaSE】异常
  7. C/C++ Qt TableDelegate 自定义代理组件
  8. Java设计模式之(十三)——模板方法模式
  9. 【2020五校联考NOIP #8】自闭
  10. .NET6控制台程序使用quartz.net