nginx重新整理——————http请求的11个阶段中的preaccess[十四]

前言

简单整理一下preaccess。

正文

主要是介绍一下上文提及到的limit_req以及limit_conn。

里面是http_limit_conn_module 默认编译进去。

生效范围:

  1. 全部的workder 进程
  2. 进入preaccess 阶段前不生效
  3. 限制的有效性取决于key的设计: 依赖postread 阶段的realip模块取到真实的ip。

limit_conn 指令:

syntax : limit_conn_zone key zone=name:size;
default: 无
context: http

限制并发连接数:
syntax: limit_conn zone number
default: —
Context: http,server,location

限制发生时的日志级别:
syntax: limit_conn_log_level info|notice|warn|error;
default: error
Context: http,server,location

限制发生时向客户端返回的错误码

syntax: limit_conn_status code;
default: limit_conn_status 503;
context:” http,server,location

例子:

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

这里limit_conn_zone 可以看到名字为addr,然后key 是addr,分配了10m的内存空间。

limit_conn_status 表示限制的时候返回500。 limit_conn_log_level 错误等级设置为警告。

然后limit_rate 表示了限制速率为50字节每秒。那么limit_conn addr 1;,表示使用addr 这个配置,并且并发数量设置为1。

那么访问一下。

因为这里限制了连接数为1,且是50k,那么其实只有开两个终端,那么一定有一个会返回500的。

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

那么如何限制每个客户端每秒请求处理的请求数量?

生效阶段 ngx_http_preaccess_pathase 阶段

模块: http_limit_req_module

默认编译金nginx,通过–without-http_limit_req_module 禁用功能
生效算法: leaky bucket 算法

生效范围:

  1. 全部worker 进程
  2. 进入preaccess阶段前不生效

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

syntax: limit_req_zone key zone=name:size rate=rate;

context http

限制并发连接数:

syntax: limit_req zone=name [burst=namber] [nodelay];
context: http server location

syntax: limit_req_log_level info|notice|warn|error;
default: limit_req_log_level error;
context: http,server,location

限制发生时向客户端返回的错误码:

syntax: limit_red_status code
default: limit_red_status 503;
context: http,server,location
例子:

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

这里限制了,每分钟请求两次。

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

然后可以设置一下burst 这个同的大小。

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

这里加了一个burst=3 nodelay,那么就可以额外请求3个,但是这个额外的3个优先级较低,如果有其他的用户访问,那么会处理其他的。

如果把nodelay去掉,不会立马出现错误,那么就会出现等待。

nginx重新整理——————http请求的11个阶段中的preaccess[十四]

下一节access 阶段。

Original: https://www.cnblogs.com/aoximin/p/16218634.html
Author: 敖毛毛
Title: nginx重新整理——————http请求的11个阶段中的preaccess[十四]

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543803/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【动力节点Springboot学习笔记】Springboot集成redis

    今天这篇博客也是学习springboot做的学习笔记,关于springboot集成redis,分享给有需要的小伙伴们,视频看的动力节点 动力节点王鹤老师讲解的springboot教…

    Java 2023年6月7日
    071
  • Spring boot——JMX 监控

    spring.jmx.enabled=true 在命令行中执行 jconsole命令启动”Java管理和监视控制台”,然后选择org.springframe…

    Java 2023年5月30日
    077
  • <5>Linux-静态库和动态库

    1 库及库的分类 库本质:是二进制形式的目标代码(.o) 库的作用? † 库的分类:静态库和动态库(共享库)。 静态库和动态库的区别 如果程序是在编译时加载库文件的,就是使用了静态…

    Java 2023年6月15日
    056
  • spring boot 支持返回 xml

    JAXB(Java Architecture for XML Binding) 是一个业界的标准,可以实现java类和xml的互转 jdk中包括JAXB JAXB vs jacks…

    Java 2023年5月30日
    064
  • spring BeanFactory VS FactoryBean

    一、FactoryBean示例 public class DateStringFactoryBean implements FactoryBean { private boolea…

    Java 2023年5月30日
    093
  • mybatis配置解析

    一.引言:参考官方文档mybatis中提供了如下的配置,其中标红的需要掌握,其余的作为了解即可 二:配置解析之前的环境准备:进行配置之前要先有这几个东西,包括数据库表、Mybati…

    Java 2023年6月9日
    071
  • 小程序开发入门

    傻逼设计的小程序的语法吧,这么难用 首先要知道生命周期,一般来说,某个页面的打开是伴随着参数的 我们先将这些参数初始化到 data 里, 然后在 onshow 中渲染 page对象…

    Java 2023年6月7日
    090
  • spring-boot-starter-actuator

    使用: HTTP方法 路径 描述 鉴权 GET /autoconfig 查看自动配置的使用情况 true GET /configprops 查看配置属性,包括默认配置 true G…

    Java 2023年6月13日
    071
  • Java设计模式之(十二)——观察者模式

    1、什么是观察者模式? Define a one-to-many dependency between objects so that when one object change…

    Java 2023年5月29日
    084
  • MySQL的undo日志—MVCC前置知识

    undo日志 前面学习了redo日志,redo日志保证的是崩溃时事务持久性。我们可以从redo日志恢复到系统崩溃以前。 undo日志就是为了保证事务回滚时事务所作所为都能回到事务执…

    Java 2023年6月16日
    070
  • FileReader,FileWriter

    FileReader 一个一个字符的读: package com.gao.IO; import java.io.File; import java.io.FileNotFoundE…

    Java 2023年6月5日
    068
  • Python工具箱系列(七)

    上期描述了如何在ubuntu18.04下安装python3.8,本期将描述: · BIOS开启CPU的虚拟化支持 · 如何在windows10/11下安装wsl/wslg · 如何…

    Java 2023年6月16日
    073
  • 关于乱码的解决

    创建一个新的项目解决乱码问题 今天在进行一个普通java文件的创建时,发现测试的demo不能输出中文,查看了系统设置之后,是因为系统的编码设置是默认的,为此我们要将编码设置为UTF…

    Java 2023年6月13日
    065
  • Java连载156-IO总结(三)

    一、管道流 &#xA0;&#xA0;<span class="hljs-keyword">final</span>&am…

    Java 2023年6月13日
    080
  • 2022美团Java后端开发春招实习面经

    ​ 五层架构:应用层、运输层、网络层、数据链路层、物理层 ​ HTTP 是超⽂本传输协议,也就是HyperText Transfer Protocol ​ HTTP协议拆解为超文本…

    Java 2023年6月7日
    066
  • Java–深克隆

    深克隆和浅克隆 浅克隆 有原型对象Object,它是引用类型,然后拷贝后产生两个克隆对象obj1和obj2,只是它们克隆的是Object的内存地址,因此ob1和obj2都指向Obj…

    Java 2023年6月13日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球