编程技术分享平台

网站首页 > 技术教程 正文

Nginx处理一个http请求需要经过哪11个阶段?

xnh888 2024-09-08 10:53:43 技术教程 44 ℃ 0 评论

除了http过滤模块和只提供变量的模块之外。

所有的http请求 必须从Nginx定义好的11个阶段进行请求的处理。

那么Nginx到底定义了哪11个处理阶段呢?

可以看到示意图:


一个请求到达黄色框里的时候,首先会读取请求头部,并且决定使用哪个server块上的配置指令来处理请求。我们之前的文章都介绍了Read Request headers里的内容。


先介绍一下含有POST的就是之后,PRE就是之前。



1. POST_READ: 在刚读取完请求头之后,没有做任何再加工之前。想获取到一些原始的值,会在这个阶段。如:realip。


2. SERVER_REWRITE: 这个阶段和下面的REWRITE阶段 一般都只有一个rewrite模块

3. FIND_CONFIG: 这个一般只有Nginx框架会执行,主要是做location的匹配。基本没有第三方模块。

4.REWRITE: 如:rewrite

5. POST_REWRITE:这是在REWRITE之后需要做的事情。


接下来是Access相关的三个模块,为什么用户访问要3个模块呢?因为ACCESS主要是解决能不能访问,而PREACCESS是在访问之前所要做的工作,比如限制并发连接limit_conn, 并发请求 limit_req。POSTACCESS是在ACCESS之后要做的事情。


6.PREACCESS: limit_conn, limit_req

7.ACCESS: 如 auth_basic, access, auth_request

8.POSTACCESS:


9.PRECONTENT: 如:try_files

10.CONTENT : 这个阶段的模块比较多 如index, autoindex, concat 还有一些反向代理都是在这个阶段。

11.LOG:这个阶段 都比较熟悉就是打印access log的。

这里需要注意的是 当Nginx接收完用户请求head的时候,就会按照这11个阶段的顺序依次调用每个阶段的模块。一个阶段可能会有多个模块。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表