NGINX 把http请求处理流程划分为11个阶段,逻辑细分,以模块为单位进行处理。各个阶段可以包含多个http模块,每个阶段以流水线的形式处理请求。这样的分层处理模式与计算机网络的7层模式类似,每个模块以正交的方式处理请求,带来了低耦合,模块之间的低耦合带来灵活性。

  1. NGX_HTTP_POST_READ

   接受到完整HTTP头部后的处理阶段,位于URI重写之前;

  2. NGX_HTTP_SERVER_REWRITE

    URI与location匹配之前,修改URL的阶段,用于重定向,也就是该阶段执行处于server块内,location块外的重写指令。在读取请求头的过程中,NGNIX会根据host和端口找到对应的虚拟主机配置。

  3, NGX_HTTP_FIND_CONFIG

   根据URI寻找匹配的location块配置阶段,该阶段使用重写后之后的URI来查找对应的location,该阶段可能被执行多次,可能有location级别的重写指令。

  4. NGX_HTTP_REWITR

   上一阶段找到location块后,再修改URI,location级别的URI重写阶段,该阶段执行location基本重写指令,也可能会被执行多次。

  5. NGX_HTTP_POST_REWRITE

     为了防止重写URI后导致死循环,location级别重写的后一阶段,用来检查上阶段是否有URI重写,并根据结果跳转到合适的阶段。

  6. NGX_HTTP_PERACCESS

    访问权限控制的前一阶段,该阶段在访问权限控制之前,一般也用于访问控制,比如限制访问的频率、连接数等。

  7. NGX_HTTP_ACCESS

     访问权限控制阶段,让HTTP模块判断是否允许这个请求进入NGNIX服务器,比如基于黑名单的权限控制,基于用户密码的权限控制等。

  8. NGX_HTTP_POST_ACCESS

     访问权限控制的后一阶段,该阶段根据权限控制阶段的执行结果进行相应的处理,向用户发送拒绝服务的错误码,用来相应上一阶段的拒绝。

  9. NGX_HTTP_TRY_FILES

     为访问静态资源而设置,try_files指令的处理阶段,如果没有配置try_files指令,则该阶段被跳过。

  10. NGX_HTTP_CONTENT

     处理HTTP请求内容的阶段,大部分HTTP模块进入这个阶段--相应内容生成阶段,该阶段产生相应,并发送到客户端。

  11. NGX_HTTP_LOG

   处理完请求后的日志记录阶段,该阶段记录访问日志。

nginx 工作流程的更多相关文章

  1. nginx的工作流程

    nginx请求处理流程 nginx进程结构 master进程:是作为worker进程管理的 worker进程:处理真正的请求的而master进程则是管控这些进程的工作方式的:缓存是在多个worker进 ...

  2. Nginx的架构及工作流程

    NGINX是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器.NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名,也是为解决C10K问题 ...

  3. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  4. Nginx工作原理和优化

    转自:http://blog.csdn.net/hguisu/article/details/8930668 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过 ...

  5. Nginx工作原理和优化、漏洞

    1.  Nginx的模块与工作原理 第三方模块:HTTP Upstream Request Hash模块.Notice模块和HTTP Access Key模块. 图1-1展示了Nginx模块常规的HT ...

  6. Nginx 工作原理和优化、漏洞

    1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(locat ...

  7. Nginx工作原理和优化、漏洞(转)

    查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gc ...

  8. Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡

    转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...

  9. Nginx 工作原理

    Nginx 工作原理 Nginx由内核和模块组成. Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此locat ...

  10. linux下的工作模型以及Nginx工作原理

      Web服务器主要任务就是处理来自客户端的请求,一般情况下Web服务器处理并发连接请求的工作模型有以下几种方式: 1.单线程web服务器(Single-threaded web servers) 此 ...

随机推荐

  1. 01Java常用类

    Object类 Object概述 Object类是超类,基类,所有类都默认直接继承Object类. Object类中定义的方法,是所有对象都具备的方法. Object类可以存储任何类 ​ - 可以作为 ...

  2. jquery获取文档的或某个元素的html 闲的没事凑活事的教学

    // 获取文档的 // 这个是获取本文档可能被扩展插件和广告屏蔽器污染的html $(":root").prop("outerHTML"); // 利用prom ...

  3. Linux 安装jdk教程

    https://www.cnblogs.com/mabiao008/p/12059069.html

  4. uni-app配置钉钉小程序步骤

    1.创建项目 2.在项目根目录配置或者新建package.json文件,配置代码 { "uni-app": { "scripts": { "mp-di ...

  5. vue 简单原理

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. vue3 门户网站搭建5-图标

    奈何 element 自带的图标太少,不够用,故打算使用 vite-plugin-svg-icons 组件来封装 svg-icon . ps: ui 框架选用的 element-ui,为了能跟 vue ...

  7. spring@Validated校验用法

    1.controller添加注解 public BaseResponse addOrUpdateUnit(@RequestBody @Validated RiskUnitDto riskUnitDto ...

  8. 文本超出换行添加white-space:wrap无效

    场景描述: 在vue项目中,在Modal弹窗里面使用Form表单组件,然后在FormItem里面放一个div标签用来装文字内容.有时会出现内容超出Form表单宽度但是不换行的问题. 解决方法: 给di ...

  9. JAVA学习笔记-10

    String类: 字符串是一个特殊的对象.字符串最大的特点:一旦被初始化就不可以被改变. String类适用于描述字符串事物.那么它就提供了多个方法对字符串进行操作. 常见的操作: 1.获取: int ...

  10. 本地开发环境使用redis

    1.使用cmd 连接后,查询结果出现乱码时, 尝试连接时加--raw 参数 2.如果还是乱码,设置cmd 窗口编码 chcp 65001 就是换成UTF-8代码页chcp 936 可以换回默认的GBK ...