Nginx 请求处理阶段
2018-01-05 10:24
411 查看
Nginx 处理每一个用户请求时,都是按照若干个不同阶段(phase)依次处理的,而不是根据配置文件上的顺序。
Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是:
post-read、server-rewrite、find-config、rewrite、post-rewrite、 preaccess、access、post-access、try-files、content、log.
post-read: 读取请求内容阶段
server-rewrite: Server请求地址重写阶段
find-config: 配置查找阶段
rewrite: Location请求地址重写阶段
post-rewrite: 请求地址重写提交阶段
preaccess: 访问权限检查准备阶段
access: 访问权限检查阶段
post-access: 访问权限检查提交阶段
try-files: 配置项try_files处理阶段
**content:**内容产生阶段
log: 日志模块处理阶段
Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是:
post-read、server-rewrite、find-config、rewrite、post-rewrite、 preaccess、access、post-access、try-files、content、log.
post-read: 读取请求内容阶段
Nginx读取并解析完请求头之后就立即开始运行 例如模块 ngx_realip 就在 post-read 阶段注册了处理程序,它的功能是迫使 Nginx 认为当前请求的来源地址是指定的某一个请求头的值。
server-rewrite: Server请求地址重写阶段
当 ngx_rewrite 模块的set配置指令直接书写在 server 配置块中时,运行在 server-rewrite 阶段
find-config: 配置查找阶段
这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间的配对工作。
rewrite: Location请求地址重写阶段
当 ngx_rewrite 模块的指令用于 location 块中时,便是运行在这个 rewrite 阶段。 另外,ngx_set_misc(设置md5、encode_base64等) 模块的指令,还有 ngx_lua 模块的 set_by_lua 指令和 rewrite_by_lua 指令也在此阶段。
post-rewrite: 请求地址重写提交阶段
由 Nginx 核心完成 rewrite 阶段所要求的“内部跳转”操作,如果 rewrite 阶段有此要求的话。
preaccess: 访问权限检查准备阶段
标准模块 ngx_limit_req 和 ngx_limit_zone 就运行在此阶段,前者可以控制请求的访问频度,而后者可以限制访问的并发度。
access: 访问权限检查阶段
标准模块 ngx_access、第三方模块 ngx_auth_request 以及第三方模块 ngx_lua 的 access_by_lua 指令就运行在这个阶段。 配置指令多是执行访问控制性质的任务,比如检查用户的访问权限,检查用户的来源 IP 地址是否合法
post-access: 访问权限检查提交阶段
主要用于配合 access 阶段实现标准 ngx_http_core 模块提供的配置指令 satisfy 的功能。 satisfy all(与关系) satisfy any(或关系)
try-files: 配置项try_files处理阶段
专门用于实现标准配置指令 try_files 的功能 如果前 N-1 个参数所对应的文件系统对象都不存在,try-files 阶段就会立即发起“内部跳转”到最后一个参数(即第 N 个参数)所指定的 URI.
**content:**内容产生阶段
Nginx 的 content 阶段是所有请求处理阶段中最为重要的一个,因为运行在这个阶段的配置指令一般都肩负着生成“内容” 并输出 HTTP 响应的使命。
log: 日志模块处理阶段
记录日志
相关文章推荐
- nginx的请求处理阶段 (90%)
- nginx 处理请求原理和每个阶段的意思
- nginx源码分析--多阶段请求处理
- nginx的多阶段请求处理
- nginx的多阶段请求处理
- Nginx处理请求的11个阶段(agentzh的Nginx 教程学习记录)
- nginx是如何处理请求的?
- Nginx--官网中文翻译(中英文对比)--9-nginx怎样处理一个请求How nginx processes a request
- Nginx如何处理一个请求
- Nginx服务器如何处理请求
- WEB请求处理二:Nginx请求反向代理
- nginx处理post请求(http响应头部的收发)
- nginx集群请求多次提交问题处理
- Nginx源码分析 - 实战篇 - 编写一个挂载到阶段处理的模块
- nginx 如何处理请求系列1-Nginx安装
- nginx处理firefox的POST请求可能遇到的问题:小文件可以提交,大文件不能提交
- PHP+FastCGI+Nginx动态请求处理配置
- Ubuntu下Nginx做前端代理Apache端口做处理PHP动态请求
- nginx处理web请求分析
- nginx教程-----nginx如何处理一个请求