加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_常德站长网 (https://www.0736zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Nginx源码结构分析

发布时间:2022-10-24 01:01:46 所属栏目:Unix 来源:未知
导读: ├─mail 邮件代码服务器实现目录
├─misc 该目录当前版本只包含*** perftools包
└─os nginx对各操作系统下的函数进行封装以及实现核心调用的目录。
1.2 程序编译流程
nginx有许多值得学

├─mail 邮件代码服务器实现目录

├─misc 该目录当前版本只包含*** perftools包

└─os nginx对各操作系统下的函数进行封装以及实现核心调用的目录。

1.2 程序编译流程

nginx有许多值得学习的地方,它的编译脚本也不例外。nginx的编译脚本非由autoconf等相关工具生成,都是由作者手工编写的。

列举几个与后续开发相关的目录并做说明:

src/auto/modules 根据configure和编译环境的条件生成相应的模块信息。见:ngx_modules.c

src/auto/sources 定义了不同的模块的生成规则,包括相关的源文件、依赖等,最终编译过程中会生成相应的库文件。

nginx在编译安装的过程中会生成objs目录unix结构分析,其中包括编译过程中生成的库文件,以及相关的配置文件,进入目录会存在以下文件:

ngx_auto_config.h 生成的与程序运行相关的宏

ngx_modules.c 由编译生成的模块相关的定义

src 该目录下有许多生成的库文件,作为最终生成nginx使用

1.3 构建nginx学习环境

分析nginx源码的目的是学习nginx高效的处理能力的体系结构,并能将其思想,甚至于nginx的框架借用于服务端的开发。从可扩展的模块机制、内存管理、事件系统等各个方面都有许多值得学习的地方。

但nginx的源代码的核心包间的关联度较高,其它核心的几个数据结构,包括ngx_connectionngx_arrayngx_bufngx_command等等几乎存在于代码每一个角落,我在第一次看0.1.0的时候(0.1.0是网上能找到的nginx的最早版本),发现很难将它们独立出来去对这些数据结构进行测试和学习,于是总结出自己学习的一些方法如下:

学习和熟悉核心数据结构的方法:

1、先熟悉常用的数据结构的使用,包括以下:

ngx_poolngx_connectionngx_arrayngx_buf

ngx_commandngx_logngx_eventngx_cyclengx_str等

对于这些数据结构的使用方法的原理基本熟悉,学习的方法就是看他们的实现以及http和mail中的使用,熟能生巧。

2、删除nginx.c中main函数的主体,在1的基础上学习其它内容,这样就不需要过多关注nginx的复杂的编译脚本就能学习到相应的知识。

(编辑:应用网_常德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!