开房记录怎么查得到 如何查别人开放房记录

访客3年前关于黑客接单552

从本节开始,我们将进入http模块实现原理的讲解,关于http模块,有一个非常重要的点就是其是如何存储http块、server块和location块的数据的,而且nginx有的配置项是可以在多个配置块中使用的,当http块、server块和location块中两个或者两个以上的配置块都配置了该配置项的时候,就会有一个问题是,nginx是如何处理这些配置项的。本文主要讲解http块中的各个模块数据的存储方式,这将是理解nginx的http模块的工作方式的重要基石。


1. 核心模块的存储方式

        在nginx运行过程中,有一个全局配置结构体ngx_cycle_t,其有一个属性conf_ctx,这个属性是存储nginx所有模块配置的一个数组,这个数组的长度与nginx模块的个数相同。不过需要注意的是,conf_ctx数组的之一维只会存储核心模块的配置,而其他模块对应的位置处的数组元素其实是为NULL。在conf_ctx中,各个核心模块配置结构体的存储位置与该模块在所有模块(包括非核心模块)中的相对位置是一致的,如下图所示为nginx存储核心模块的一个结构示意图:

这里标注的events和http只是为了展示方便而添加的,本质上这个数组的元素的类型是void*的指针,至于该指针指向的具体结构体的类型,则是根据各个核心模块自身的定义来的。


在http模块下,其指向了一个ngx_http_conf_ctx_t类型的结构体,这个结构体的作用就是用来存储http配置块中各个配置项的数据的。如下是这个结构体的定义:

typedef struct {
  	// 存储MAIN级别配置
    void **main_conf;  	// 存储SRV级别配置
    void **srv_conf;  	// 存储LOC级别配置
    void **loc_conf;
} ngx_http_conf_ctx_t;

我们知道,在nginx.conf配置文件中,在http块下还配置有server块,而server块下也是可以有location块,更有甚者,在location块下可以有子location块,如此往复,而这里的ngx_http_conf_ctx_t结构体的作用就是存储所有的这些配置所对应的结构体数据。首先,我们需要明确的一点是,在nginx.conf配置文件中,配置项都是由一个个模块定义的,一个模块可以定义多个配置项,对于这些配置项的解析工作都是由这个模块所定义的 *** 进行的。但是,一般的,一个模块一般都只会定义一个结构体,这个结构体中的各个属性则对应于该模块所定义的各个配置项的数据,也就是说,通过各个模块所定义的 *** ,其会将其所定义的配置项对应的配置转换为该模块所定义的结构体。这里所说的结构体就对应于上面的main_conf、srv_conf和loc_conf中的配置。从上面的定义就可以看出,这三个属性的类型都是指针类型的数组,而数组的长度就对应于模块的个数,准确来讲,是对应于http模块的各个。在解析各个http模块的配置之前,nginx会对各个http模块在当前类型的模块(http模块)中进行相对位置进行标记,每个http模块的相对位置就对应于上面的三个属性的数组下标。前面已经讲到,每个http模块都只会有一个配置结构体存储该模块所定义的所有配置数据,而这些配置结构体就是存储在上面的三个数组中的。这样,我们就能够理解了,其实上面的结构体的三个属性,每一个属性的数组都对应了一个http模块的配置结构体。


相关文章

光模块市场前景和规模(中国光模块公司排名)

光模块市场前景和规模(中国光模块公司排名)

1、光模块产业链:全球分工明确,国产替代加速 1.1全球分工明确,中国开启高端智造 光模块产业链介绍 光模块作为一种重要的有源光器件,在发送端和接收端分别实现信号的电-光转换和 光-电转换。由于...

万字长文:七个模块拆解会员体系

万字长文:七个模块拆解会员体系

本文笔者将从会员体系的构建目标、分类、组成框架、相关会员体系的创新玩法,以及案例阐明等几个模块来对会员体系举办拆解阐明。推荐给对用户运营、会员体系等感乐趣的童鞋阅读。 : 本文布局: 一、会员体系...

4个模块,浅析“用户新增”

4个模块,浅析“用户新增”

作为运营,日常事情中必不行少的会与数据打交道,新增、活泼、留存,这三个数据是运营上班当天,首先要存眷的数据。假如是游戏,还要存眷充值。前面三个数据,任何一个数据呈现异常,城市影响到最终的收益。 这一篇...

QQ卡片大脸滑稽代码分享动态卡片

本文是QQ卡片大脸滑稽代码分享动态卡片 关于卡片使用方法:https://www.isiyuan.net/jsjc/186.html 往期卡片代码:https://www.isiyua...

人力资源管理六大模块(人力资源管理的八大要

人力资源管理六大模块(人力资源管理的八大要素和六大模块)人力资源(HR)管理,目标是让企业HR更好地进行人力资源的发展和规划。系统重点是实现人力资源部门在员工素质管理、薪酬管理、绩效考核等方面的需求。...

产品推广策划书怎么写?5个模块具体方法模板全面提升产品竞争力

产品推广策划书怎么写?5个模块具体方法模板全面提升产品竞争力

产品是企业的核心,不管是虚拟产品还是实际产品,给用户带来价值的就是产品,产品推广策划书怎么写,是每个职场精英必备的工作能力,主编为你汇编一份实用的模板,供您参考; 不管是传统营销时代,互联网营销时代...