NGINX HTTP 请求的十一个阶段
NGX_HTTP_POST_READ_PHASE
在接收到完整的HTTP头部后处理的HTTP阶段
NGX_HTTP_SERVER_REWRITE_PHASE
在将请求的URI与location表达式匹配前,修改请求的URI
NGX_HTTP_FIND_CONFIG_PHASE
根据请求URI寻找匹配的location表达式,这个阶段只能由ngx_http_core_module模块实现
NGX_HTTP_REWITE_PHASE
NGX_HTTP_FIND_CONFIG_PHASE找到location之后再修改请求的URI
NGX_HTTP_POST_REWRITE_PHASE
rewrite重写URI后,防止错误的nginx.conf配置导致死循环,这一阶段只能由ngx_http_core_module模块实现。防止死循环的方法是设置rewrite次数上限
NGX_HTTP_PREACCESS_PHASE
在处理NGX_HTTP_ACCESS_PHASE之前,HTTP模块可以介入的阶段
NGX_HTTP_ACCESS_PHASE
用于判断是否允许请求访问服务器
NGX_HTTP_POST_ACCESS_PHASE
NGX_HTTP_ACCESS_PHASE判断不允许后的收尾工作,返回拒绝服务的错误响应
NGX_HTTP_TRY_FILES_PHASE
完全是为try_files配置项设立的
NGX_HTTP_CONTENT_PHASE
用于处理HTTP请求内容,这是最常介入的阶段
NGX_HTTP_LOG_PHASE
记录日志阶段
基本规则
- 11个阶段,有些是必备的,有些是可选的
- 允许多个模块介入同一个阶段,将按照HTTP模块的ctx_index顺序执行它们提供的handler方法
- NGX_HTTP_FIND_CONFIG_PHASE、NGX_HTTP_POST_REWRITE_PHASE、NGX_HTTP_POST_ACCESS_PHASE、NGX_HTTP_TRY_FILES_PHASE 这四个阶段不允许HTTP模块介入,仅由HTTP框架实现