一. http请求11个阶段
typedef enum {
// 接收到完整的HTTP头部后处理阶段
NGX_HTTP_POST_READ_PHASE = 0,
// 将请求URI与location表达式匹配前,修改URI,即重定向阶段
NGX_HTTP_SERVER_REWRITE_PHASE,
// 只能由ngx_http_core_module模块实现,用于根据请求URI寻找location表达式
NGX_HTTP_FIND_CONFIG_PHASE,
// 上一过程结束后修改URI
NGX_HTTP_REWRITE_PHASE,
// 为了防止rewrite造成死循环(一个请求执行10次会被Nginx认定为死循环)
NGX_HTTP_POST_REWRITE_PHASE,
// 在“决定请求访问权限”阶段前
NGX_HTTP_PREACCESS_PHASE,
// 决定访问权阶段,判断该请求是否可以访问Nginx服务器
NGX_HTTP_ACCESS_PHASE,
// 当然请求不被允许访问Nginx服务器时,该阶段负责向用户返回错误响应
NGX_HTTP_POST_ACCESS_PHASE,
// 用try_files配置项。顺序访问多个静态文件资源阶段
NGX_HTTP_TRY_FILES_PHASE,
// 处理HTTP请求内容阶段,这是大部分HTTP模块介入的阶段
NGX_HTTP_CONTENT_PHASE,
// 记录日志阶段
NGX_HTTP_LOG_PHASE
} ngx_http_phases;
二.每个阶段handler