码迷,mamicode.com
首页 > 其他好文 > 详细

解剖Nginx·模块开发篇(4)模块开发中的命名规则和模块加载与运行流程

时间:2014-10-22 17:41:49      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   io   os   ar   sp   文件   on   

1 命名规则

1.1 基本变量

基本变量有三个:

  • ngx_module_t 类型的 ngx_http_foo_bar_module;
  • ngx_command_t 类型的数组 ngx_http_foo_bar_commands;
  • ngx_http_module_t 类型的 ngx_http_foo_bar_module_ctx。

假设你开发了一个 Foo Bar 模块,那么模块名称应该叫:

ngx_http_foo_bar_module

命令集合的名字的命名规则:

ngx_http_foo_bar_commands

上下文的明子的命名规则:

ngx_http_foo_bar_module_ctx

1.2 基本类型

模块配置

ngx_http_foo_bar_<main|srv|loc>_conf_t

2 加载与运行流程

这与 ngx_http_foo_bar_module_ctx 很有关系,它是 ngx_http_module_t 类型的,该类型定义如下:

typedef struct {
    ngx_int_t   (*preconfiguration)(ngx_conf_t *cf);
    ngx_int_t   (*postconfiguration)(ngx_conf_t *cf);

    void       *(*create_main_conf)(ngx_conf_t *cf);
    char       *(*init_main_conf)(ngx_conf_t *cf, void *conf);

    void       *(*create_srv_conf)(ngx_conf_t *cf);
    char       *(*merge_srv_conf)(ngx_conf_t *cf, void *prev, void *conf);

    void       *(*create_loc_conf)(ngx_conf_t *cf);
    char       *(*merge_loc_conf)(ngx_conf_t *cf, void *prev, void *conf);
} ngx_http_module_t;

2.1 preconfiguration

调用ngx_http_foo_bar_module_ctx.preconfiguration初始化 http 组件和 nginx 其他组件的交互;

2.2 解析配置文件

解析配置文件中的http模块。http包含serverlocation等模块,所以在解析http组件时,会根据具体的配置情况,多次调用ngx_http_foo_bar_module_ctx.create_(srv|loc)_conf,创建 main_conf、srv_conf、loc_conf;

2.3 初始化 http 组件的 main 部分

调用ngx_http_foo_bar_module_ctx.init_main_conf初始化 main 组件;

2.4 merge

调用ngx_http_foo_bar_module_ctx.merge_srv_conf合并那些定义在“http”组件中的“server”组件配置。调用ngx_http_foo_bar_module_ctx.merge_loc_conf合并那些定义在上层组件中的“location”配置;

2.5 postconfiguration

调用ngx_http_foo_bar_module_ctx.postconfigation初始化 http 组件和 nginx 其他组件的交互。

-

解剖Nginx·模块开发篇(4)模块开发中的命名规则和模块加载与运行流程

标签:style   http   color   io   os   ar   sp   文件   on   

原文地址:http://www.cnblogs.com/breg/p/4043658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!