基本变量有三个:
假设你开发了一个 Foo Bar 模块,那么模块名称应该叫:
ngx_http_foo_bar_module
命令集合的名字的命名规则:
ngx_http_foo_bar_commands
上下文的明子的命名规则:
ngx_http_foo_bar_module_ctx
模块配置
ngx_http_foo_bar_<main|srv|loc>_conf_t
这与 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;
调用ngx_http_foo_bar_module_ctx.preconfiguration
初始化 http 组件和 nginx 其他组件的交互;
解析配置文件中的http
模块。http
包含server
、location
等模块,所以在解析http
组件时,会根据具体的配置情况,多次调用ngx_http_foo_bar_module_ctx.create_(srv|loc)_conf
,创建 main_conf、srv_conf、loc_conf;
调用ngx_http_foo_bar_module_ctx.init_main_conf
初始化 main 组件;
调用ngx_http_foo_bar_module_ctx.merge_srv_conf
合并那些定义在“http”组件中的“server”组件配置。调用ngx_http_foo_bar_module_ctx.merge_loc_conf
合并那些定义在上层组件中的“location”配置;
调用ngx_http_foo_bar_module_ctx.postconfigation
初始化 http 组件和 nginx 其他组件的交互。
-
转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant
-