struct ngx_module_s {
ngx_uint_t ctx_index;
ngx_uint_t index;
……
};
index : 是所有模块在ngx_modules.c文件中的ngx_modules数组中的序号,它与ngx_modules数组中所有模块的顺序是一致的。
ngx_max_module =0;
for(i=0; ngx_modules[i]; i )
{
ngx_modules[i]->index = ngx_max_modules ;
}
ngx_max_modules 是Nginx模块的总个数。
注意一点是: Nginx各模块在ngx_modules数组中的顺序是很重要的,依靠index成员,每一个模块才可以把自己的位置和其他模块进行比较,并以此决定行为。
同时,Nginx又允许再次定义子类型, ctx_index表明了模块在相同类型模块中的顺序
ngx_event_max_module =0;
for(i=0; ngx_modules[i]; i )
{
if(ngx_modules[i]->type != NGX_EVENT_MODULE)
{
continue;
}
ngx_modules[i]->ctx_index = ngx_event_max_module ;
}
其中,ngx_event_max_module是编译进Nginx的所有事件模块的总个数。
总的来说,index就是该模块在所有Nginx模块中的序号, ctx_index是该模块在同一类模块中的序号。