Nginx-HTTP请求的11个阶段

系列文章目录



前言

Nginx对请求的处理,发生在多个HTTP执行阶段,了解这些阶段的执行顺序和用户,对后续nginx模块的学习有非常重要的作用。


一、HTTP请求的11个阶段

在这里插入图片描述

1)NGX_HTTP_POST_READ_PHASE

接受到完整的http头部后,读取请求内容阶段,nginx读取并解析完请求头之后就立即开始执行;

2) NGX_HTTP_SERVER_REWRITE_PHASE

在uri与location匹配之前修改请求的URI(重定向),在server块中的请求地址重写阶段;
Nginx-rewrite模块详解

3) NGX_HTTP_FIND_CONFIG_PHASE

配置查找阶段,根据请求uri匹配location表达式,这个阶段不支持nginx模块注册处理程序,而是由ngx_http_core_module模块来完成当前请求与location配置快之间的配对工作
详细内容参考:
Nginx-location匹配规则

4)NGX_HTTP_REWRITE_PHASE

location块中的请求地址重写阶段,当rewrite指令用于location中,即运行。另外,ngx_lua模块中的set_by_lua指令和rewrite_by_lua指令也在此阶段;
Nginx-rewrite模块详解

5)NGX_HTTP_POST_REWRITE_PHASE

请求地址重写提交阶段,防止递归修改uri造成死循环,(一个请求执行10次就会被nginx认定为死循环)该阶段只能由ngx_http_core_module模块实现

6)NGX_HTTP_PREACCESS_PHASE

访问权限检查准备阶段,http模块介入处理阶段,标准模块ngx_limit_req和ngx_limit_zone就运行在此阶段,前置可以控制访问的频率,后者限制访问的并发度
nginx限制并发-ngx_http_limit_conn_module
nginx限制访问速率-http_limit_req_module

7)NGX_HTTP_ACCESS_PHASE

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

nginx限制IP访问-nginx-http_access_module
nginx认证-nginx-http_auth_basic_module

8)NGX_HTTP_POST_ACCESS_PHASE

访问权限检查提交阶段;如果请求不被允许访问nginx服务器,该阶段负责向用户返回错误响应;

9)NGX_HTTP_TRY_FILES_PHASE

配置项try_files处理阶段

如果http请求访问静态文件资源,try_files配置项可以使这个请求顺序地访问多个静态文件资源,直到某个静态文件资源符合选取条件;

10)NGX_HTTP_CONTENT_PHASE

内容产生阶段,大部分HTTP模块会介入该阶段,是所有请求处理阶段中最重要的阶段,因为这个阶段的指令通常是用来生成HTTP响应内容的;

11)NGX_HTTP_LOG_PHASE

日志模块处理阶段,记录日志。

总结

后续讲分别用案例分析11个阶段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值