nginx模块上下文索引和索引

2022-11-30 14:09:08 浏览数 (1)

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是该模块在同一类模块中的序号。

0 人点赞