1. ngx_cycle_s的conf_ctx和modules cycle->conf_ctx :配置文件上下文数组。每个模块的配置文件数据结构的指针地址都会按照模块的index索引放置在cycle->conf_ctx数组中。 cycle->modules:模块数组。模块也会按照模块的索引index放在cycle->modules数组上。具体可以参考《Nginx源码分析 - 主流程篇 - 模块的初始化 》...
1.NGX_DIRECT_CONF表示ngx_core_module,也就是配置中最外边配置的那些参数,因为 ngx_core_module,所对应的conf结构体,在初始化的时候已经创建好了,所以再ctx[index]的位 置是有conf的首地址的指针的,相当于图中虚拟地址50,后面在set command到结构体的时候,只需要把这个指针传过去就行了,这里ctx 2级指针是说...
for(i=0;cycle->modules[i];i++){if(cycle->modules[i]->type!=NGX_CORE_MODULE){continue;}module=cycle->modules[i]->ctx;if(module->create_conf){rv=module->create_conf(cycle);cycle->conf_ctx[cycle->modules[i]->index]=rv;}} 每个NGX_CORE_MODULE模块都会定义一个create_conf的钩子,然后...
void ***conf_ctx; /* 配置文件 上下文的数组,每个模块的配置信息*/ngx_pool_t*pool; /* 内存池地址 */ngx_log_t*log; /* 日志 */ ngx_log_t new_log; ngx_uint_t log_use_stderr; /* unsigned log_use_stderr:1; */ngx_connection_t**files; /* 连接文件句柄 */ ngx_connection_t *fr...
之后的内存结构如图所示,本人通过gdb调试取得,本次conf_ctx地址为:0x101011a28 图1:未保存任何地址的数组 .png 2.回调核心模块create_conf函数 接下来,遍历模块数组cycle->modules,找到核心模块,回调其create_conf函数,创建配置项结构体,将相应地址存放于图1中的数组内。
在http模块下,其指向了一个ngx_http_conf_ctx_t类型的结构体,这个结构体的作用就是用来存储http配置块中各个配置项的数据的。如下是这个结构体的定义: 代码语言:javascript 复制 typedef struct{// 存储MAIN级别配置void**main_conf;// 存储SRV级别配置void**srv_conf;// 存储LOC级别配置void**loc_conf;}ngx...
void ***conf_ctx; //配置上下文数组(含所有模块) ngx_pool_t *pool; //内存池 ngx_log_t *log; //日志 ngx_log_t new_log; ngx_connection_t **files; //连接文件 ngx_connection_t *free_connections; //空闲连接 ngx_uint_t free_connection_n; //空闲连接个数 ngx...
当处理或解析http{}块内的main级别配置项时,将会分别调用create_main_conf()、create_srv_conf()以及create_loc_conf()方法分别创建3个结构体,用于存储http全局配置项、server配置项以及location配置项。找到对应级别的配置项后,又如何获取各个配置项参数呢?这时就要看一个叫ngx_http_conf_ctx_t的结构体: ...
3. create_loc_conf 4. preconfiguration 5. 读取配置后执行指令的set回调 6. init_main_conf 7. merge_srv_conf 8. merge_loc_conf 9. postconfiguration 每个http模块可以根据自己的需要实现对应的接口,http框架会在合适的位置调用这些接口。 前面介绍的nginx的配置的内存布局一问中说过,cycle的conf_ctx成员保...
create_conf 针对 core_module 类型的模块,将会调用 create_conf 方法: 并且把根据模块号存入了 cycle→conf_ctx 中。这个过程主要是进行配置数据结构的初始化。以epoll模块为例: ngx_conf_parse 解析配置文件 这个函数一共有以下几个过程: ngx_conf_read_token 这个过程主要进行配置配置的解析工作,解析完成的一个...