Nginx 处理请求的全过程一共划分为 11 个阶段(如图),按阶段由上到下依次执行 (上一阶段的所有指令执行完毕,才进入下一阶段)
各阶段的含义如下:
² post-read: 接收到完整的http头部后处理的阶段,在uri重写之前。一般跳过
² server-rewrite: location匹配前,修改uri的阶段,用于重定向,location块外的重写指令(多次执行)
² find-config: uri寻找匹配的location块配置项(多次执行)
² rewrite: 找到location块后再修改uri,location级别的uri重写阶段(多次执行)
² post-rewrite: 防死循环,跳转到对应阶段
² preaccess: 权限预处理
² access: 判断是否允许这个请求进入
² post-access: 向用户发送拒绝服务的错误码,用来响应上一阶段的拒绝
² try-files: 访问静态文件资源
² content : 内容生成阶段,该阶段产生响应,并发送到客户端
² log: 记录访问日志