【Nginx】http配置模型

当Nginx检测到http关键配置项时,http配置模型启动,首先会建立一个ngx_http_cong_ctx_t结构。

typedef struct

{

  void **main_conf;

  void **srv_conf;

  void **loc_conf;

}ngx_http_conf_ctx_t;

http框架会为所有的http模块建立三个数组,分别存放所有http模块create_main_conf,create_srv_conf,create_loc_conf方法返回的地址指针。

一、解析http配置的流程

1.Nginx进程的主循环调用配置文件解析器来解析nginx.conf文件

2.当发现配置文件中含有http{}关键字时,http框架开始启动。

3.http框架会初始化所有http模块的序列号,并创建ngx_http_conf_ctx_t结构

4.调用每个http模块的create_main_conf,create_srv_conf,create_loc_conf方法

5.把各http模块上述三个方法返回的地址依次保存到ngx_http_conf_ctx_t结构体的单个数组中

...

二、http配置模型的内存布局

如果实现了create_main_conf方法,它所创建的结构体只会存放直接出现在http{}块下的配置项;如果实现了create_srv_conf方法,那么它所创建的结构体既会存放直接出现在http{}块下的配置项,也会存放直接出现在server{}块下的配置项,create_loc_conf方法同理。

以上设计是考虑到nginx.conf文件中高级别的配置可以对所包含的低级别配置起作用,同时也给出了不同级别下同名配置冲突时的解决方案。

三、如何合并配置项

对各模块及其嵌套模块的结构体调用merge_srv_conf,merge_loc_conf操作

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2014-07-10 18:35  合唱团abc  阅读(273)  评论(0编辑  收藏  举报