nginx phases 详细介绍

来源:互联网 发布:js onclick 参数 编辑:程序博客网 时间:2024/05/24 00:00

     我们知道,nginx 请求分为下面几个阶段:

 

typedef enum {
    NGX_HTTP_POST_READ_PHASE = 0,      //读取请求

    NGX_HTTP_SERVER_REWRITE_PHASE,     //server重写

    NGX_HTTP_FIND_CONFIG_PHASE,        //查找配置
    NGX_HTTP_REWRITE_PHASE,            //重写
    NGX_HTTP_POST_REWRITE_PHASE,       //处理重写

    NGX_HTTP_PREACCESS_PHASE,          //权限检查准备阶段

    NGX_HTTP_ACCESS_PHASE,             //权限检查
    NGX_HTTP_POST_ACCESS_PHASE,        //权限检查后处理

    NGX_HTTP_TRY_FILES_PHASE,          //不知道
    NGX_HTTP_CONTENT_PHASE,            //结果生成阶段

    NGX_HTTP_LOG_PHASE                 //日志处理阶段
} ngx_http_phases;

 

 

下面对这些过程详细介绍:

 

一  NGX_HTTP_POST_READ_PHASE

 

do nothing

 


二  NGX_HTTP_SERVER_REWRITE_PHASE

 

do nothing

 

三 NGX_HTTP_FIND_CONFIG_PHASE

 

      根据请求的位置,去查找对应的 loc_conf ,具体过程可以 模块定位中介绍。

 

四 NGX_HTTP_REWRITE_PHASE

 

 

五 NGX_HTTP_POST_REWRITE_PHASE,     



六 NGX_HTTP_PREACCESS_PHASE,

 

 

 

 

七 NGX_HTTP_ACCESS_PHASE,       

 

./src/http/modules/ngx_http_auth_basic_module.c:    h = ngx_array_push(&cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers);
./src/http/modules/ngx_http_access_module.c:    h = ngx_array_push(&cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers);

 

这个阶段有两个handler 

 

 

八 NGX_HTTP_POST_ACCESS_PHASE,

 

直接调用 ngx_http_core_post_access_phase函数 (ngx_http_core_module.c)。现在基本没有干什么事情

 

 

 

九 NGX_HTTP_TRY_FILES_PHASE,

 

十 NGX_HTTP_CONTENT_PHASE,      

 

直接调用 ngx_http_core_content_phase()来生成内容

 

默认的情况下,这个包含三个handler:

ngx_http_index_module.c         : 如果是目录,那么在index后面的文件中选择一个进行跳转

ngx_http_autoindex_module.c

ngx_http_static_module.c            处理静态的文件

 

 

 十一 NGX_HTTP_LOG_PHASE

 

 

 

 

原创粉丝点击