当前位置首页 > Nginx知识

nginx11个过程

阅读次数:306 次  来源:admin  发布时间:

ginx在处理每一个用户请求时,都是按照若干个不同的阶段依次处理的,与配置文件上的顺序没有关系,详细内容可以阅读《深入理解nginx:模块开发与架构解析》这本书,这里只做简单介绍;

1、post-read

读取请求内容阶段,nginx 读取并解析完请求头之后就立即开始运行;

例如模块 ngx_realip 就在 post-read 阶段注册了处理程序,它的功能是迫使 Nginx 认为当前请求的来源地址是指定的某一个请求头的值。

2、server-rewrite

erver 块中请求地址重写阶段;

当 ngx_rewrite 模块的 rewrite、set 配置指令直接书写在 server 配置块中时,基本上都是运行在 server-rewrite 阶段

3、find-config

配置查找阶段,用来完成当前请求与 location 配重块之间的配对工作

这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间的配对工作。

4、rewrite

location 块中请求地址重写阶段,当 ngx_rewrite 模块的 rewrite 指令用于 location 中,就是再这个阶段运行的;

另外,ngx_set_misc(设置md5、encode_base64等) 模块的指令,还有 ngx_lua 模块的 set_by_lua 指令和 rewrite_by_lua 指令也在此阶段。

5、post-rewrite

请求地址重写提交阶段,由 Nginx 核心完成 rewrite 阶段所要求的“内部跳转”操作,如果 rewrite 阶段有此要求的话。

6、preacce

访问权限检查准备阶段,标准模块 ngx_limit_req 和 ngx_limit_zone 就运行在此阶段,前者可以控制请求的访问频度,而后者可以限制访问的并发度。

7、acce

访问权限检查阶段,标准模块 ngx_access、第三方模块 ngx_auth_request 以及第三方模块 ngx_lua 的 access_by_lua 指令就运行在这个阶段。 配置指令多是执行访问控制性质的任务,比如检查用户的访问权限,检查用户的来源 IP 地址是否合法。

8、post-acce

访问权限检查提交阶段;

主要用于配合 access 阶段实现标准 ngx_http_core 模块提供的配置指令 satisfy 的功能。

atisfy all(与关系)

atisfy any(或关系)

9、try-file

配置项 try_files 处理阶段;

专门用于实现标准配置指令 try_files 的功能 如果前 N-1 个参数所对应的文件系统对象都不存在,try-files 阶段就会立即发起“内部跳转”到最后一个参数(即第 N 个参数)所指定的 URI。

10、content

内容产生阶段,是所有请求处理阶段中最为重要的阶段,因为这个阶段的指令通常是用来生成HTTP响应内容的;

Nginx 的 content 阶段是所有请求处理阶段中最为重要的一个,因为运行在这个阶段的配置指令一般都肩负着生成“内容” 并输出 HTTP 响应的使命。

11、log

日志模块处理阶段;

记录日志。

上一篇:在Debian10上安装ISPConfig3-Roundcube插件
下一篇:[转]测试环境下将centos6.8升级到centos7的操作记录