上一章对Nginx的架构有了一个初步的了解。这章,为了对源码仔细的剖析,先要对Nginx的源码结构有一个了解。从宏观上把握源码模块的结构。

一.nginx源码的3个目录结构

在安装的nginx的目录下,有一个目录src,这里边存放了nginx的所有源代码,包括:core,event, http, mail,misc,os

其中

1)mai目录中存放了实现Nginx服务器的邮件服务的源码,主要实现对邮件服务依赖的数据结构的定义和初始化,像SMTP, POP3, IMAP, SSL的支持

2)misc目录中存放了两个文件:ngx_cpp_test_module.cpp文件实现的功能是测试程序中引用的头文件是否与C++兼容;

ngx_google_perftools_module.c文件是用来支持Google PerTools的使用的。

3)os目录其中包含一个Unix目录,存放的是针对“类unix系统“,像Solaris等情况;

4)core目录,event目录,http目录是重点;

####三个目录简单的情况####

(1)core目录

这个目录中存放了nginx的关键数据结构和内核源码实现

在这个目录中还包括Ngx_cycle.*文件, ngx_log.*文件, ngx_string.*文件,ngx_array.*, ngx_list.*, ngx_hash.*等和一些重要的内存管理的源码。

(2)event目录

这个目录里包含Nginx服务器的事件驱动模型,实现了nginx服务器的消息机制。在modules目录下包括:AIO, epoll, kqueue, rtsig等。

(3)http目录

该目录下的源码为Nginx服务器提供了web服务提供了主要支持。

二.Nginx源码的模块化结构

为了使清楚的了解nginx的源码结构,分成了8个模块;

(1)公共功能部分

(2)内存管理

这部分实现了Nginx服务器的内存管理,包括内存池的管理,公共内存的分配,缓存区的管理等

(3)事件驱动

(4)日志管理

(5)Http服务

(6)mail服务

(7)模块支持

综上,把nginx的基本源码用图形的形式表示出来,可以更加清楚了解结构。

参考《Nginx高性能Web服务器详解》

Nginx源码结构的更多相关文章

  1. Nginx源码结构及如何处理请求

    一.源码结构   1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码       2:src源码目录下,可以看到这几个目录     mail:mail目录中存放了实现Nginx服务器 ...

  2. nginx源码学习_源码结构

    nginx的优秀除了体现在程序结构以及代码风格上,nginx的源码组织也同样简洁明了,目录结构层次结构清晰,值得我们去学习.nginx的源码目录与nginx的模块化以及功能的划分是紧密结合,这也使得我 ...

  3. nginx源码分析-源码结构

    本文主要简单介绍nginx源码目录结构.程序编译流程.如何构建学习nginx的环境等.本文以及后续nginx源码分析文章是基于nginx当前(2009-02-27)的稳定版本0.6.35进行的分析,该 ...

  4. nginx源码分析之网络初始化

    nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...

  5. nginx源码分析之hash的实现

    nginx实现了自己的hash数据结构,正如数据结构中讲述的那样,nginx用开放链表法解决冲突,不过不同的是一旦一个hash表被初始化后就不会被修改,即插入和删除,只进行查询操作,所以nginx通过 ...

  6. 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)

    俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中 ...

  7. Nginx源码分析--数组(转)

    原文地址:http://blog.csdn.net/marcky/article/details/5747431 备注:以下关于Nginx源码的分析基于淘宝开源项目Tengine. Nginx中对数组 ...

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

    编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」.   导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...

  9. 菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock[转]

    菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

随机推荐

  1. Flex 播放视频

    Flex提供视频控件(VideoDisplay Control)播放图像和声音. 视频控件只支持播放,暂停和停止功能.不提供倒退和前进功能.只支持播放FLV格式的影片. 1. 视频控件标签 对应的MX ...

  2. 查询数据库中表或视图或存储过程的数量 sql 语句

    如果一个数据库中表的数量较多的话,那么在统计数据库中表的数量或视图或存储过程的数量时,如果还有一个一个去数,那就太麻烦了,其实可以通过 sql 语句来查询的,sql 语句的查询方法如下: sql se ...

  3. linux中ll和du的区别

    首先,明确一个概念,linux中目录其实也是一个文件,它存储了一张表,该表就是该目录文件下,所有文件名和inode的映射关系. 其中inode和数据块block的关系http://c.bianchen ...

  4. Eclipse 启动Tomcat后web项目的classes的子文件夹中没有calss文件

    Eclipse 启动Tomcat后web项目的classes的子文件夹中没有calss文件. 经网上查得以下方法可解决 把properties属性里的java compiler-->buildi ...

  5. 条码解析的一片js

    function HIBC_CheckCode(code) {     var nonCheckCode = code.substr(0, code.length - 1);     var arr ...

  6. 二模10day2解题报告

    T1.最多因子数(divisors) 给出范围l,r求其中约数和最大的最小整数. 非常深井冰的题目:如果特判加暴力的话分数低的可怜 AC做法要用到分解质因数和线性筛(这俩好写),然而,一个一个枚举还是 ...

  7. 【Hibernate 6】常用的hql语句以及N+1问题

    HQL:Hibernate Query Language,是Hibernate框架中的查询语言,十分接近于SQL语言!以下介绍一些常用的Hql语句: 一.测试类 Classes类: <span ...

  8. Oracle:使用过程中的问题集锦

    导读:在使用Oracle的过程中,又频繁的出问题.突然间就连接不上,各种报错了.在此,将问题给记录下来,方便以后查看. 一.ora 12514监听程序当前无法识别 之前一直链接使用的好好的,突然就连接 ...

  9. .net orm比较之dapper和Entity Framework6的简单测试比较

    .net orm比较之dapper和Entity Framework6的简单测试比较

  10. WP8_Json的用法

    WP从服务器.API交换数据一般都是用JSON格式字符串. 下面介绍用Newtonsoft.Json来处理JSON. 准备 1.到 http://json.codeplex.com/ 下载Newton ...