Nginx源码剖析--event类型模块

目录

前言

前面梗概介绍了Nginx模块配置的信息。简单地说,nginx的灵活性主要归功于他的高度模块化和可配置性。其中可配置性依赖于配置文件。在nginx中,模块就是一个struct类型的全局变量。Nginx通过为每个模块维护一个配置结构体来使得每个模块的行为根据配置文件而改变。

Nginx所有模块的配置结构体都有组织地放在nginx_cycle的conf_ctx中。conf_ctx维护的是一个多维数据,逻辑上可以简单地归结为下图的形式:


这里写图片描述

其中level1数组中的每个元素存储的是指向 核心模块的配置结构体的指针。核心模块的作用是 管理相同类型的功能模块

这篇博文主要是讲一下event模块的解析配置过程。后面会依次介绍http,stream等功能模块的配置组织过程。其实都大同小异。

核心模块

event的核心模块是:

//nginx_event.c
ngx_module_t  ngx_events_module = {
    NGX_MODULE_V1,
    &ngx_events_module_ctx,                /* module context */
    ngx_events_commands,                   /* module directives */
    NGX_CORE_MODULE,                       /* module type */
    NULL,                                  /* init master */
    NULL,                                  /* init module */
    NULL,                                  /* init process */
    NULL,                                  /* init thread */
    NULL,                                  /* exit thread */
    NULL,                                  /* exit process */
    NULL,                                  /* exit master */
    NGX_MODULE_V1_PADDING
};

注意,核心模块的的type=NGX_CORE_MODULE

对于核心模块的来说,它的配置流程主要是包括以下几步:


1. 如果核心模块的ctx,也就是ngx_core_module_t的create_conf函数指针不为空,则调用这个函数,创建该核心模块的配置结构体。
2. 调用ngx_conf_parse和ngx_conf_param函数解析核心模块组织下的所有相同类型的功能模块。核心模块的结构体配置主要是在这部分完成。
3. 如果核心模块的ctx,也就是ngx_core_module_t的init_conf函数指针不为空,则调用这个函数。

以上这些步骤都是可以从ngx_init_cycle函数中清晰看到的。

显然这里的核心就是第二部分了。

对于event模块来说,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值