【Nginx】HTTP框架概述

来源:互联网 发布:金蝶专业版 数据恢复 编辑:程序博客网 时间:2024/05/22 12:42

HTTP框架由核心模块ngx_http_module、两个HTTP模块ngx_http_core_module和ngx_http_upstream_module组成。整个HTTP框架调度其它HTTP模块来处理HTTP请求。HTTP框架的首要任务就是通过调用ngx_http_module_t接口管理所有HTTP模块的配置项。每一个HTTP模块ngx_module_t的ctx指针都必须指向一个ngx_http_module_t接口。例如ngx_http_core_module模块:

ngx_module_t  ngx_http_core_module = {    NGX_MODULE_V1,    &ngx_http_core_module_ctx,             /* module context */    ngx_http_core_commands,                /* module directives */    NGX_HTTP_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};

其中包含了一个ngx_http_core_module_ctx接口,这个接口的定义如下:

static ngx_http_module_t  ngx_http_core_module_ctx = {    ngx_http_core_preconfiguration,        /* 解析http块配置项前回调 */    NULL,                                  /* 解析完http块配置项后回调 */    ngx_http_core_create_main_conf,        /* 创建用于存储位于http块内的配置项 */    ngx_http_core_init_main_conf,          /* 解析完http内配置项后调用 */    ngx_http_core_create_srv_conf,         /* 创建用于存储位于http配置块和server配置块内的配置项 */    ngx_http_core_merge_srv_conf,          /* 将http块内同名的配置项合并到server块内 */    ngx_http_core_create_loc_conf,         /* 创建用于存储位于http配置块、server配置块、location配置块内的配置项 */    ngx_http_core_merge_loc_conf           /* 将其它两个块内同名配置项合并到location块内 */};

可以看到,ngx_http_module_t接口完全是围绕配置项来进行的。一个块配置项对应一个结构体,块配置项的种类包括:
  • http块配置项:整个HTTP业务都位于这个块内。
  • server块配置项:每一个server{}块代表一个虚拟主机,由块内server_name确定主机名。
  • location块配置项:如果匹配用户请求中的URI,那么就选择location{}块内的配置项来处理用户请求。
当以上三个块配置项中出现了相同名称的配置项时,以哪个配置块内的值为准由各个模块自由定义,甚至可以把两个配置项参数相加。

参考:
《深入理解Nginx》 P347-P351.

0 0
原创粉丝点击