前言

简单整理一下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. Effective C++ 第一章:让自己习惯C++

    Effective C++ 第一章:让自己习惯C++ 引言 最近在阅读这本<effective C++ 改善程序与设计的55个具体做法>这本书,为了以后忘记的时候回顾,写一些笔记,每次笔记 ...

  2. Android---Android Studio项目目录结构分析.

    1. .gradle 和.idea 这两个目录下放置的都是 Android Studio 自动生成的一些文件,我们无须关心,也不要去手 动编辑. 2. app 项目中的代码.资源等内容几乎都是放置在这 ...

  3. 精贴总结 - Serverless 的承诺都兑现了吗

    原文 - Serverless 的承诺都兑现了吗? 一.个人看法 serverless根本目的是降低成本,所以baas是核心 冷启动是关键的技术难点,也限制了faas的作用域 供应商锁定是个坑,标准化 ...

  4. 基于DSP的设备振动信号的采集和处理模块研发总结

    前记  在能源领域,由于很多地方都是无人值守,设备故障检测是一个必须面对的问题.笔者通过最近几个行业案例了解到,由于很多设备发生故障时候会产生特定频谱的声音,所以该行业对振动监测的需求特别强烈,由于涉 ...

  5. Linux 服务器Python后台运行服务(ssh断开不退出)

    壹: 最近用python搭建一个物联网数据存储的微服务,部署到ubuntu上去,所以,python后台运行是一个必不可少的环节. 贰: 这个只需要是一个命令即可: 命令1(记录所有日志): nohup ...

  6. idea的安装和无限期试用

    十年前在笔者开发的时候一直使用的是eclipse软件,但后来所有的发现公司基本用的是idea,还得重新学习idea用法,所以准备在去新公司前,来学习使用idea吧 第一步:安装idea https:/ ...

  7. Kettle实战视频教程

    kettle实战视频教程 欢迎关注笔者的公众号: java大师, 每日推送java.kettle运维等领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!!个人网站: http://w ...

  8. 修改easyui日期控件只显示年月,并且只能选择年月

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Handler屏障消息

    Handler 屏障消息 Handler Message 种类 Handler的Message种类分为3种: 普通消息 屏障消息 异步消息 同步消息 我们默认用的都是同步消息,即前面讲Handler里 ...

  10. (1)Python基础的一些教学资料和视频

    Python相关的一些书籍 链接: https://pan.baidu.com/s/1uVT_xQRShxsw2gRhjJhikA 密码: 5fgi Python的相关进阶课程 链接: https:/ ...