Nginx源码结构
上一章对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源码结构的更多相关文章
- Nginx源码结构及如何处理请求
一.源码结构 1:下载安装包后,解压,可以看到目录结构,其中src目录下放的是源码 2:src源码目录下,可以看到这几个目录 mail:mail目录中存放了实现Nginx服务器 ...
- nginx源码学习_源码结构
nginx的优秀除了体现在程序结构以及代码风格上,nginx的源码组织也同样简洁明了,目录结构层次结构清晰,值得我们去学习.nginx的源码目录与nginx的模块化以及功能的划分是紧密结合,这也使得我 ...
- nginx源码分析-源码结构
本文主要简单介绍nginx源码目录结构.程序编译流程.如何构建学习nginx的环境等.本文以及后续nginx源码分析文章是基于nginx当前(2009-02-27)的稳定版本0.6.35进行的分析,该 ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- nginx源码分析之hash的实现
nginx实现了自己的hash数据结构,正如数据结构中讲述的那样,nginx用开放链表法解决冲突,不过不同的是一旦一个hash表被初始化后就不会被修改,即插入和删除,只进行查询操作,所以nginx通过 ...
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)
俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中 ...
- Nginx源码分析--数组(转)
原文地址:http://blog.csdn.net/marcky/article/details/5747431 备注:以下关于Nginx源码的分析基于淘宝开源项目Tengine. Nginx中对数组 ...
- Nginx源码分析:3张图看懂启动及进程工作原理
编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」. 导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...
- 菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock[转]
菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
随机推荐
- Android开发-API指南-<action>
<action> 英文原文:http://developer.android.com/guide/topics/manifest/action-element.html 采集(更新)日期: ...
- 三方框架之masonry
这个详细的介绍:http://www.cocoachina.com/ios/20141219/10702.html Masonry 源码:https://github.com/Masonry/Maso ...
- linux C中va_list用法
#include <stdio.h> #include <stdarg.h> int demo( int, ... ); int main( void ) { demo(1, ...
- No.012 Integer to Roman
12. Integer to Roman Total Accepted: 71315 Total Submissions: 176625 Difficulty: Medium Given an int ...
- MySQL学习笔记(二)
二.SQL基本知识 SQL 是一种典型的非过程化程序设计语言,这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定.非过程化程序设计语言的优点在于 ...
- wcscpy wcscpy_s strcpy strcpy_s的区别
原型声明:extern char *strcpy(char *dest,const char *src); 头文件:string.h 功能:把从src地址开始且含有NULL结束符的字符串赋值到以des ...
- Mysql group by 排序问题
类如 有一个 帖子的回复表,posts( id , tid , subject , message , dateline ) , id 为 自动增长字段, tid为该回复的主题帖子的id(外键关联), ...
- Android手机指令操作释疑
有人问我一个关于Android手机root与否的问题,她说明明iTools显示已取得root权限,但她就是没法在该手机上运行需要root权限的App如钛备份等等.我告诉她最好的确认方式便是以adb指令 ...
- leetcode 118
118. Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(七)-- 结构化配置
本篇将记录.Net Core里颇有特色的结构化配置的使用方法. 相比较之前通过Web.Config或者App.Config配置文件里使用xml节点定义配置内容的方式,.Net Core在配置系统上发生 ...