前言

简单整理一下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

例子:

这里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的。

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

生效阶段 ngx_http_preaccess_pathase 阶段

模块: http_limit_req_module

默认编译金nginx,通过--without-http_limit_req_module 禁用功能

生效算法: leaky bucket 算法

生效范围:

  1. 全部worker 进程
  2. 进入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

例子:

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

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

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

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

下一节access 阶段。

nginx重新整理——————http请求的11个阶段中的preaccess[十四]的更多相关文章

  1. 万字长文!一次性弄懂 Nginx 处理 HTTP 请求的 11 个阶段

    Nginx 处理一个 HTTP 请求的全过程 前面给大家讲了 Nginx 是如何处理 HTTP请求头部的,接下来就到了真正处理 HTTP 请求的阶段了.先看下面这张图,这张图是 Nginx 处理 HT ...

  2. nginx系列7:处理HTTP请求的11个阶段

    处理HTTP请求的11个阶段 如下图: 序号 阶段 指令 备注 1 POST_READ realip 获取客户端真实IP 2 SERVER_REWRITE rewrite 3 FIND_CONFIG ...

  3. Nginx处理请求的11个阶段(agentzh的Nginx 教程学习记录)

    Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是 post-read.server-rewrite.find-config.rewrite.post-rewrite.preacc ...

  4. nginx处理请求的11个阶段

    Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是 post-read.server-rewrite.find-config.rewrite.post-rewrite.preacc ...

  5. Nginx 请求的11个阶段

    48 1:当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作 2:Identity 寻找匹配哪个Location  3:Apply Rate Limi ...

  6. 【Nginx】HTTP请求的11个处理阶段

    Nginx将一个HTTP请求分成多个阶段.以模块为单位进行处理.这样做的优点是使处理过程更加灵活.减少耦合度.HTTP框架将处理分成了11个阶段,各个阶段能够包括随意多个HTTP模块并以流水线的方式处 ...

  7. nginx源代码分析--读请求主体(1)

    首先,读取请求体已进入HTTP要求11相,我们需要做的请求正文部分处理一些模块,所以这个模块需要注册功能在这个阶段,在阅读功能要求的身体ngx_http_read_client_request_bod ...

  8. nginx&http 第三章 ngx 请求处理的 11 个阶段 --ngx_http_process_request& ngx_http_handler

    ngx_http_process_request如果设置了定时器则删除,既然所有的请求已经接收完毕,就不会再发生超时了 重设连接的读写回调函数 重设请求读事件回调函数 调用 ngx_http_hand ...

  9. nginx&http 第三章 ngx HTTP 请求的 11 个处理阶段

    nginx 将一个 HTTP 请求分为 11 个处理阶段,这样做让每一个 HTTP 模块可以仅仅专注于完成一个独立.简单的功能,而一个请求的完整处理过程可以由多个 HTTP 模块共同合作完成将一次 H ...

  10. 用lua扩展你的Nginx(整理)-----openresty

    用lua扩展你的Nginx(整理) 首先得声明.这不是我的原创,是在网上搜索到的一篇文章,原著是谁也搞不清楚了.按风格应该是属于章亦春的文章. 整理花了不少时间,所以就暂写成原创吧. 一. 概述 Ng ...

随机推荐

  1. C# 课堂管理系统(火影忍者界面!!!)

    1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...

  2. aardio ide 字体 及设置

    需求 aardio ide 只支持一个字体,英文字体肯定是Fira 但是中文字体不好,所以只好将两个字体合并上使用. 有教程.但是我发现已经有合并好的,就拿来使用吧放到fonts目录里面 代码 imp ...

  3. 网关接口映射项目 前端 nestjs 项目名称 tf-gateway-http-proxy 改Nginx了

    需求 前端 需要连接后台地址,每次换别人联调都要修改,好几个项目的时候,就要改好几个 关键每次git提交 还会显示文件修改了 强迫症患者 表示 忍不了 群里有人给了个脚本 有时间可以替换nginx h ...

  4. python tkinter - pickle 持久化

    查看当前python版本命令 cmd - python 现在当前版本是 3.8.8 tkinter - tool kits interface

  5. STM32 SPI DMA 源码解析及总结

    一 前言 最近在调试stm32的SPI时候i,遇到了一个非常诡异的问题.中间花费了不少时间才把问题搞定.这中间暴露的问题值得反思.借此机会,还是梳理一下stm32的SPI的代码做一个总结吧. 二 初始 ...

  6. Android 混淆打包后gson报错Missing type parameter

    原文: Android 混淆打包后gson报错Missing type parameter - Stars-One的杂货小窝 记录一个简单的bug 在代码中使用了gson将json转为list: va ...

  7. [转] vscode C/C++ 插件预定义环境变量(linux)

    原文 假设: 你当前编辑的文件是: /home/your-username/your-project/folder/file.ext /home/your-username/your-project ...

  8. 三维模型3DTile格式轻量化压缩在移动智能终端应用方面的重要性分析

    三维模型3DTile格式轻量化压缩在移动智能终端应用方面的重要性分析 随着移动智能终端设备的不断发展和普及,如智能手机.平板电脑等,以及5G网络技术的推广应用,使得在这些设备上频繁使用三维地理空间数据 ...

  9. 记录--分享8个非常实用的Vue自定义指令

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也允许注册自定义指令.它的作用价值在于当开发人员 ...

  10. 从零开始写 Docker(八)---实现 mydocker run -d 支持后台运行容器

    本文为从零开始写 Docker 系列第八篇,实现类似 docker run -d 的功能,使得容器能够后台运行. 完整代码见:https://github.com/lixd/mydocker 欢迎 S ...