《Nginx高性能Web服务器详解》第11章Nginx基本数据结构,本章开始,我们学习Nginx源码的具体实现。学习体系错综复杂、功能服务实现丰富的Nginx服务器源码,应该从整个源码体系赖以存在的基本元素--数据结构开始学起。本节为大家介绍ngx_conf_s结构体。

作者:苗泽来源:电子工业出版社|2013-12-02 11:43

收藏

分享

11.9  ngx_conf_s结构体

该结构体用于Nginx在解析配置文件时描述每个指令的属性,也是Nginx程序中非常重要的一个数据结构,我们在/nginx/src/core/ngx_conf_file.h文件中可以找到它的定义:

  1. struct ngx_conf_s  {
  2. char                    *name;
  3. ngx_array_t             *args;
  4. ngx_cycle_t             *cycle;
  5. ngx_pool_t              *pool;
  6. ngx_pool_t              *temp_pool;
  7. ngx_conf_file_t         *conf_file;
  8. ngx_log_t               *log;
  9. void                    *ctx;
  10. ngx_uint_t              module_type;
  11. ngx_uint_t              cmd_type;
  12. ngx_conf_handler_pt     handler;
  13. char                    *handler_conf;
  14. };

*name,存放当前解析到的指令。

*args,存放该指令包含的所有参数。

*cycle,参见11.8节"ngx_cycle_s结构体"。

*pool,参见11.4节"ngx_pool_s结构体"。

*temp_pool,用于解析配置文件的临时内存池,解析完成后释放。其结构体类型的细节参见11.4节"ngx_pool_s结构体"。

*conf_file,存放Nginx配置文件的相关信息。ngx_conf_file_t结构体的定义我们在该文件中也能找到:

  1. typedef struct {
  2. ngx_file_t            file;                                     //文件的属性
  3. ngx_buf_t            *buffer;                                   //文件的内容
  4. ngx_uint_t            line;                                     //文件的行数
  5. } ngx_conf_file_t;

*log,描述日志文件的相关属性。

*ctx,描述指令的上下文。

module_type,支持该指令的模块的类型,core、http、event和mail中的一种。

cmd_type,指令的类型。

handler,指令自定义的处理函数。

*handler_conf,自定义处理函数需要的相关配置。

ngx_conf_s相关推荐

  1. 负载均衡Load Balance学习

    目录 1. 负载均衡简介 2. 负载均衡算法 3. Nginx负载均衡调度算法源码调研 1. 负载均衡简介 0x1: 负载均衡是什么 负载均衡是一种技术架构方法,它并不是具体指哪一种技术,也正是因为这 ...

  2. Nginx源码分析:3张图看懂启动及进程工作原理

    图一:nginx 启动及内存申请过程分析 任何程序都离不开启动和配置解析.ngx 的代码离不开 ngx_cycle_s 和 ngx_pool_s 这两个核心数据结构,所以我们在启动之前先来分析下. 内 ...

  3. nginx源码分析—内存池结构ngx_pool_t及内存管理

    本博客( http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究.学习内容所做的笔记,欢迎广大朋友指正! Content 0.序 1.内存池结构 1.1 ...

  4. nginx学习十 ngx_cycle_t 、ngx_connection_t 和ngx_listening_t

    最近在开始看nginx的事件模块,经常看到ngx_cycle_t.ngx_connection_t和ngx_listening_t这三个结构体,刚开始没在意,看到了就重新上网变量的意思,后来觉得不弄懂 ...

  5. nginx html解析插件,nginx配置信息的解析流程

    nginx配置信息的解析流程 2011年9月9日 1,744 次浏览 请关注最新修正合订: 这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来.顺序也不记得了,看到那个就发那个吧,最近都会发 ...

  6. nginx学习十 ngx_cycle_t 、ngx_connection_t 和ngx_listening_t

    最近在开始看nginx的事件模块,经常看到ngx_cycle_t.ngx_connection_t和ngx_listening_t这三个结构体,刚开始没在意,看到了就重新上网变量的意思,后来觉得不弄懂 ...

  7. nginx详细文档 – 安装配置,深入源码,模块编写,编译器参数,系统函数

    nginx文档 吴东 April 28, 2009 Contents 1前言 5 2基本配置 7 2.1安装------- 7 2.2配置说明------. 10 2.3启动和控制------ 25 ...

  8. nginx配置解析之缓冲区管理

    nginx服务器的master进程在解析nginx.conf时,会使用一个4k大小的缓存区存放部分配置文件信息.nginx会从配置文件中读取4k大小的内容到缓冲区,之后对缓冲区中的内容进行逐个字符扫描 ...

  9. nginx配置解析流程

    上一篇文章分析了nginx配置文件缓冲区的管理,接下来将详细分析nginx是如何解析配置文件的.包含模块上下文结构的创建.core核心模块的解析.event事件模块的解析.http模块的解析. 一.模 ...

最新文章

  1. 远程办公难?实战经验为你打消4大顾虑
  2. SSH实现分页查询(转)
  3. Java Spring源代码学习之how is bean scanned - did not answer when this.beanDefinitionNames is filled
  4. runtime_mysql_users_proxysql的配置系统
  5. 一起等补丁:操作系统漏洞StrandHogg 2.0几乎影响所有安卓设备
  6. 使用Keras打造一个实时可用交通标志识别App
  7. 乔布斯的这 3 个故事依然激励着我
  8. java中的变量是什么
  9. 腾讯校招 针对找工作的小伙伴们
  10. 前端找实习岗的7条建议
  11. 联想笔记本重装系统无法进入记录
  12. ISO26262-道路车辆功能安全
  13. Think Python 2e 中文版
  14. 微信小程序--优购页面制作
  15. 应用安全系列之二十九:密码管理
  16. mysql命令大全(转)
  17. 个性化推荐系统设计(3.1)——如何评价个性化推荐系统的效果
  18. 隐马尔可夫模型(Baum Welch算法与Viterbi算法)
  19. 令人头疼的背包九讲(1)0/1背包问题
  20. FL Studio水果简体中文20.9版本下载

热门文章

  1. 常用 API 函数(3): 文件处理函数
  2. 实现ISA Server 2006物理机到VMware ESX 4虚拟机的迁移
  3. HDU - 4565 So Easy!(共轭构造+推公式+矩阵快速幂)
  4. angularjs全栈开发知乎_1-4【微信小程序全栈开发课程】原生小程序框架介绍
  5. javascript核心_javascript核心之DOM操作
  6. c/c++ 两种文件流用法
  7. ESP8266开发笔记
  8. 在Linux中安装R语言包,遇到无法验证下列签名的错误
  9. 关于欧拉工程的一道递推题
  10. hdu4746(莫比乌斯反演)