Nginx源码剖析--HTTP模块配置结构体在conf_ctx中的组织

本文探讨了Nginx中HTTP模块在conf_ctx中的组织结构,重点关注http、server和location块的配置结构体。每个HTTP模块维护main_conf、srv_conf、loc_conf三种配置结构体,用于存储不同级别的配置项。通过ngx_http_core_module,Nginx解决了在运行时查找server和location块的ngx_http_conf_ctx_t的问题,实现了配置的层级组织和继承。
摘要由CSDN通过智能技术生成


前言

上一篇文章介绍了event模块的配置结构体的初始化以及模块中的一些初始化函数,比如init_process函数。这些工作都是在服务器启动之前必须完成的。
在介绍event模块的配置结构体初始化时,我们知道event模块的解析是从

events{
}

“events”关键字开始的。也就是说与event模块相关的所有配置项都必须在配置文件的events块中。

本篇博文将开始介绍http模块的初始化操作。相对event模块来说,http模块要复杂的多。无论是从功能,数量还是模块的配置结构体在conf_ctx中的组织上看,都相当复杂。

这篇博文开始遵循之前一篇对event模块的分析方式对http模块展开分析。为了直观分析,我们在最开始先给出HTTP模块在conf_ctx中的组织形式,当然,这种情况下给出的组织形式还是比较粗糙的,后面我们会跟踪http部分配置文件的解析代码,进一步细化这个配置模块的组织形式。


http模块配置结构体组织架构

这个sector我们结合配置文件的形式看一下配置文件中各种形式的http{}块对应的模块配置结构体的组织形式:

http{
  ....
  server{
     .....
     location {
       ..... 
     }
  }
}

如上的http配置模式应该是最普遍使用的形式了。很多其他配置形式都是往这个形式上添加server{}块或者location块变成的。

我们下面看一下针对这个http配置块形式的http配置结构体的组织形式:


这里写图片描述

如上图所示conf_ctx指向的是核心模块创建的配置结构体数组。注意我们这里不关心顺序,因为http模块对应的核心数组创建的配置结构体不一定是在conf_ctx的第二个位置。

从这个图中我们可以直观地看到,对应每一个http块,server块,location块都会创建一个

ngx_http_conf_ctx_t

的结构体。这个结构体具有如下形式:

typedef
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值