Nginx配置信息在内存中的数据结构

Nginx在内存中的数据结构, 还只是部分,  后续完善


Nginx配置文件解析匹配过程:


匹配解析过程是分层次的, 先比较配置项名字, 在比较模块类型(这些选项不在配置文件中, 而是在module的配置中和block解析函数中硬编码)是否相同; 再解析配置的指令是否存在,和模块类型类是,也是硬编码的.

ngx_conf_handler: 

1. 首先判断名称是否相同:(len + name);

2. 判断模块类型是否相同(ngx_modules[i]->type和ngx_conf_s->module_type): 在解析某模块时会在ngx_conf_s->module_type赋相应的值如: 

    nginx_init_cycle:  NGX_CORE_MODULE

    ngx_http_block:  NGX_HTTP_MODULE

    ngx_events_block:  NGX_EVENT_MODULE

    ngx_mail_block:   NGX_MAIL_MODULE


3. 最后判断command(ngx_modules[i]->commands->type)中是否配置了这个module相应的指令:

ngx_init_cycle:  conf.cmd_type = NGX_MAIN_CONF

ngx_events_block: cf->cmd_type = NGX_EVENT_CONF

ngx_http_block: cf->cmd_type = NGX_HTTP_MAIN_CONF

ngx_http_core_server: cf->cmd_type = NGX_HTTP_SRV_CONF

ngx_http_core_location: cf->cmd_type = NGX_HTTP_LOC_CONF

ngx_http_core_limit_except: cf->cmd_type = NGX_HTTP_LMT_CONF

ngx_http_upstream: cf->cmd_type = NGX_HTTP_UPS_CONF

ngx_mail_block: cf->cmd_type = NGX_MAIL_MAIN_CONF

ngx_mail_core_server:  cf->cmd_type = NGX_MAIL_SRV_CONF



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值