【Nginx】HTTP框架概述

16 篇文章 4 订阅

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值