nginx 11个过程
nginx在处理每一个用户请求时,都是按照若干个不同的阶段依次处理的,与配置文件上的顺序没有关系,详细内容可以阅读《深入理解nginx:模块开发与架构解析》这本书,这里只做简单介绍;
1、post-read
读取请求内容阶段,nginx 读取并解析完请求头之后就立即开始运行;
例如模块 ngx_realip 就在 post-read 阶段注册了处理程序,它的功能是迫使 Nginx 认为当前请求的来源地址是指定的某一个请求头的值。
2、server-rewrite
server 块中请求地址重写阶段;
当 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、preaccess
访问权限检查准备阶段,标准模块 ngx_limit_req 和 ngx_limit_zone 就运行在此阶段,前者可以控制请求的访问频度,而后者可以限制访问的并发度。
7、access
访问权限检查阶段,标准模块 ngx_access、第三方模块 ngx_auth_request 以及第三方模块 ngx_lua 的 access_by_lua 指令就运行在这个阶段。 配置指令多是执行访问控制性质的任务,比如检查用户的访问权限,检查用户的来源 IP 地址是否合法。
8、post-access
访问权限检查提交阶段;
主要用于配合 access 阶段实现标准 ngx_http_core 模块提供的配置指令 satisfy 的功能。
satisfy all(与关系)
satisfy any(或关系)
9、try-files
配置项 try_files 处理阶段;
专门用于实现标准配置指令 try_files 的功能 如果前 N-1 个参数所对应的文件系统对象都不存在,try-files 阶段就会立即发起“内部跳转”到最后一个参数(即第 N 个参数)所指定的 URI。
10、content
内容产生阶段,是所有请求处理阶段中最为重要的阶段,因为这个阶段的指令通常是用来生成HTTP响应内容的;
Nginx 的 content 阶段是所有请求处理阶段中最为重要的一个,因为运行在这个阶段的配置指令一般都肩负着生成“内容” 并输出 HTTP 响应的使命。
11、log
日志模块处理阶段;
记录日志。
nginx 11个过程的更多相关文章
- nginx 11个处理阶段 && nginx lua 8个处理阶段
1. nginx 11 个处理阶段 nginx实际把请求处理流程划分为了11个阶段,这样划分的原因是将请求的执行逻辑细分,各阶段按照处理时机定义了清晰的执行语义,开发者可以很容易分辨自己需要开发的模块 ...
- Nginx的启动过程
主要介绍Nginx的启动过程,可以在/core/nginx.c中找到Nginx的主函数main(),那么就从这里开始分析Nginx的启动过程. 涉及到的基本函数 源码: View Code Ngin ...
- client和nginx简易交互过程
# client和nginx简易交互过程- step1:client发起http请求- step2:dns服务器解析域名得到主机ip- step3:默认端口为80,通过ip+port建立tcp/ip链 ...
- Nginx处理请求过程
1. worker进程工作机制 现在我们了解了当我们在操作nginx的时候,nginx内部做的一些事情,那么worker进程又是如何处理请求的呢? 我们前面有提到,worker进程之间是平等的, ...
- Oracle编程入门经典 第11章 过程、函数和程序包
目录 11.1 优势和利益... 1 11.2 过程... 1 11.2.1 语法... 2 11.2.2 建立或者替换... 2 11.2 ...
- CentOS7离线安装Nginx(详细安装过程)
CentOS7离线安装Nginx(详细安装过程) 1.安装gcc.g++ 下载好所需的文件后上传至服务器(下载地址:https://download.csdn.net/download/a729360 ...
- Nginx在安装过程经常出现的问题
在Linux操作系统下搭建Nginx服务器,很多时候会出现不同的错误,在此我们在搭建过程中出现的错误进行一些总结: 主要问题有: 1.防火墙问题 2.缺少gc++ 3.缺少pcre.zlib库 解决办 ...
- VMware搭建12.0搭建Mac OS10.11详细过程
1.软件准备 1.1VMware12.0 1.2VMware增强包 1.3Mac OS10.11 cdr(相当于dmg) 1.4securable.exe 2.软件破解 2.1VMware输入序列号破 ...
- 【Nginx】启动过程
从应用程序的启动过程中main功能开始跟踪. 解析命令行參数并保存到ngx_cycle_t结构体中,在ngx_process_options函数中将保存配置文件路径. 调用ngx_add_inheri ...
随机推荐
- Zookeeper入门-Linux环境下异常ConnectionLossException解决
实际项目开发中,用的是Linux环境. 中午突然断电,死活连不上Zookeeper,最终发现是需要关闭防火墙. 看日志,报错如下: Exception in thread "mai ...
- Mysql学习总结(25)——MySQL外连接查询
1.左外连接left outer join或者left jion,outer可以省略不写,下边的右连接和全连接也一样: 左外连接的意思是,以left join左边的表中的数据为基准,即左边的表中有的必 ...
- hdu 4496 并查集 逆向 并查集删边
貌似某大犇说过 正难则反,,, 题目说要对这张图进行删边,然后判断联通块的个数,那么就可以先把所有边都删掉,之后从后往前加边,若加的边两端点不在同一个联通块中, 那么此时联通快个数少一,否则不变 #i ...
- BNUOJ34980方(芳)格(哥)取数(好坑)
方(芳)格(哥)取数 Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class n ...
- CCEditBox/CCEditBoxImplAndroid
#ifndef __CCEDITBOXIMPLANDROID_H__ #define __CCEDITBOXIMPLANDROID_H__ #include "cocos2d.h" ...
- Java读取配置文件的方式
Java读取配置文件的方式-笔记 1 取当前启动文件夹下的配置文件 一般来讲启动java程序的时候.在启动的文件夹下会有配置文件 classLoader.getResource(&qu ...
- sas数据导入终极汇总-之中的一个
将数据文件读入SAS --DATA Step / PROC IMPORT 1.将SAS文件读入SAS-- data sasuser.saslin; set "F:\sa ...
- Metasploit的三种启动方式
不多说,直接上干货! 注意:博主我用的是Kali linux 2016.2(Rolling). msfcli 的启动 root@kali:~# msfcli -h bash: msfcli: 未找到 ...
- java根据模板导出PDF(利用itext)
一.制作模板 1.下载Adobe Acrobat 9 Pro软件(pdf编辑器),制作模板必须使用该工具. 2.下载itextpdf-5.5.5.jar.itext-asian-5.2.0.j ...
- CUDA笔记(八)
今天真正进入了攻坚期.不光是疲劳,主要是遇到的问题指数级上升,都是需要绕道的. 以visual profile来说,刚刚发现自己还没使用过. http://bbs.csdn.net/topics/39 ...