前言

简单整理一下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. 1. Canal入门

    1. Canal简介 官方文档: https://github.com/alibaba/canal/wiki/简介 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.早期 ...

  2. npm pack - npm install .tgz 离线安装 前端开发环境

    npm pack - npm install .tgz 离线安装 前端开发环境 为什么有这个需求 曾经出差,到一个机构里面,里面是局域网,没有外网.后台都是java,刻录个光盘,然后就把开发环境装好了 ...

  3. Docker部署nginx配置SSL多目录

    对自己第一次搭建nginx做个简要的笔记 第一步:创建宿主机挂载点目录 mkdir -p /home/nginx/{conf,conf.d,html,log,ssl} 第二步:安装简易版nginx,复 ...

  4. ETL工具-KETTLE教程实例实战3----转换(输入、输出)

    ETL工具-KETTLE教程实例实战3----转换(输入.输出) 欢迎关注笔者的公众号: java大师, 每日推送java.kettle运维等领域干货文章,关注即免费无套路附送 100G 海量学习.面 ...

  5. vite+vue3 打包后页面空白现象

    使用vite打包之后运行index.html空白,打开控制台发现报错: 解决方法: 在vite.config中加入: publicPath: './', 这是vite.config中的结构:   ex ...

  6. 【3D可视化】3D可视化在智慧园区的应用

    随着5G运用和新基建政策,构建智慧城市系统成为当下城市管理的热门需求,智慧园区建设的核心是3D可视化平台,利用它可以提高企业园区智能化.3D数字化管理服务水平. 一.智慧园区概念 "3D可视 ...

  7. View之invalidate,requestLayout,postInvalidate

    目录介绍 01.invalidate,requestLayout,postInvalidate区别 02.invalidate深入分析 03.postInvalidate深入分析 04.request ...

  8. Linux快速入门(一)Linux基础知识

    我的环境:Ubuntu(后面涉及到的Linux均为Debian系列) Linux不同发行版的包管理方式 (1)Redhat系列:Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式 (2 ...

  9. 新零售SaaS架构:线上商城系统架构设计

    零售商家为什么要建设线上商城? 传统的实体门店服务范围有限,只能吸引周边500米以内的消费者.因此,如何拓展服务范围,吸引更多的消费者到店,成为了店家迫切需要解决的问题. 缺乏忠实顾客,客户基础不稳, ...

  10. Python 变换单词顺序组成新的一句话

    需求描述: 现在给出几个单词需要不断变换单词的顺序组成新的一句话 import itertools import pandas as pd # 定义项目列表 items = ['dog', 'appl ...