nginx 工作流程
NGINX 把http请求处理流程划分为11个阶段,逻辑细分,以模块为单位进行处理。各个阶段可以包含多个http模块,每个阶段以流水线的形式处理请求。这样的分层处理模式与计算机网络的7层模式类似,每个模块以正交的方式处理请求,带来了低耦合,模块之间的低耦合带来灵活性。
1. NGX_HTTP_POST_READ
接受到完整HTTP头部后的处理阶段,位于URI重写之前;
2. NGX_HTTP_SERVER_REWRITE
URI与location匹配之前,修改URL的阶段,用于重定向,也就是该阶段执行处于server块内,location块外的重写指令。在读取请求头的过程中,NGNIX会根据host和端口找到对应的虚拟主机配置。
3, NGX_HTTP_FIND_CONFIG
根据URI寻找匹配的location块配置阶段,该阶段使用重写后之后的URI来查找对应的location,该阶段可能被执行多次,可能有location级别的重写指令。
4. NGX_HTTP_REWITR
上一阶段找到location块后,再修改URI,location级别的URI重写阶段,该阶段执行location基本重写指令,也可能会被执行多次。
5. NGX_HTTP_POST_REWRITE
为了防止重写URI后导致死循环,location级别重写的后一阶段,用来检查上阶段是否有URI重写,并根据结果跳转到合适的阶段。
6. NGX_HTTP_PERACCESS
访问权限控制的前一阶段,该阶段在访问权限控制之前,一般也用于访问控制,比如限制访问的频率、连接数等。
7. NGX_HTTP_ACCESS
访问权限控制阶段,让HTTP模块判断是否允许这个请求进入NGNIX服务器,比如基于黑名单的权限控制,基于用户密码的权限控制等。
8. NGX_HTTP_POST_ACCESS
访问权限控制的后一阶段,该阶段根据权限控制阶段的执行结果进行相应的处理,向用户发送拒绝服务的错误码,用来相应上一阶段的拒绝。
9. NGX_HTTP_TRY_FILES
为访问静态资源而设置,try_files指令的处理阶段,如果没有配置try_files指令,则该阶段被跳过。
10. NGX_HTTP_CONTENT
处理HTTP请求内容的阶段,大部分HTTP模块进入这个阶段--相应内容生成阶段,该阶段产生相应,并发送到客户端。
11. NGX_HTTP_LOG
处理完请求后的日志记录阶段,该阶段记录访问日志。
最新文章
- CAS 4.0.0RC 配置通过数据库认证用户登录
- C++ 合成默认构造函数的真相
- Linux之Qt利用Sqlite静态编译库(转)
- 微信公众号发起微信支付 c#
- FFMPEG视音频编解码零基础学习方法
- Connect to the mysql dataase from remote server
- python下如何处理windows的路径名
- Xcode常用快捷键 (转载)
- Centos 升级MySQL版本或者Yum安装Mysql5.6
- tmd123.com
- Model Validation(模型验证)
- (转)用JMX监测JVM的运行参数
- Idea下载后初始配置(windows环境下)
- Centos6.9安装vsftpd并配置多用户的方法
- 51Nod 1108 距离之和最小 V2 1096 距离之和最小 中位数性质
- 关于Yuri Boykov and Vladimir Kolmogorov 于2004年提出的max flow / min cut的算法的详解
- 使用exceljs时报错:no such file or directory
- Gym - 101982C Contest Setting (动态规划)
- Django与ajax、分页器
- 【Docker】退出容器和进入容器