Nginx二次开发(1.1)初解目录

来源:互联网 发布:paxos算法视频教程 编辑:程序博客网 时间:2024/06/07 02:49

1.1nginx的目录构成

图1-1nginx目录结构

auto:自动编译安装相关目录

conf:相关配置文件等目录,包括nginx的配置文件、fcgi相关的配置等

html:网页存放位置,如index.html、50x.html

src:源码目录

编译时,configure脚本会引用auto目录下面的脚本文件,如在configure文件中有如下几行代码:

引用的就是auto目录下的options、init、sources脚本

 

 

1)auto

其中auto目录下的目录文件组成如下图:

图1-2auto目录结构

cc:针对各种编译器进行相应的编译配置目录,这个目录下的脚本会检查编译器类型和版本,如 Gcc、Ccc等,见图1-3 cc目录组成

lib: 程序依赖的各种库, 这个目录下的脚本会检查所需要的标准库的版本如md5,openssl,pcre等

os: 针对不同操作系统所做的编译配置目录,检查操作系统版本


 

图1-3 cc目录组成

编译时,configure脚本会引用auto目录下面的脚本文件,在configure文件中第58行、第98行负责将第三方模块加入到nginx中。

2)src

其中src目录下的结构如图1-4 src目录结构:

图1-4src目录结构

core:核心源码目录,如自定义常用数据结构(ngx_str_t、ngx_buf_t、ngx_chain_t等)、体系结构实现等,nginx的入口main函数就在此目录下的nginx.c文件中

event: 封装事件相关的源码目录

http: http服务器实现目录,后期要研究的很多模块实现均在这个目录中

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

misc: 该目录当前版本只包含google perftools包

os: nginx对各操作系统下的函数进行封装以及实现核心调用的目录,如nginx发送响应数据时,实际调用的就是此目录下的ngx_linux_sendfile_chain函数(ngx_linux_sendfile_chain.c),而ngx_linux_sendfile_chain函数又通过判断数据是内存中还是磁盘上然后调用writev或sendfile函数

3)编译安装nginx,默认安装在/usr/local/nginx,可执行文件在/usr/local/sbin目录下。如果指定安装目录,会在安装目录下生成一个objs目录。如果环境满足要求,则会在objs目录下生成Makefile、ngx_auto_config.h 、ngx_auto_headers.h 、ngx_modules.c 等文件,此外还会生成一个名为src的目录。objs目录结构见图1-5 objs目录结构


图1-5objs目录结构

src:这个目录与前面介绍的src目录虽然子目录相同,但子目录下的文件不同。这个src目录的子目录下的文件都是一些后缀名为o的镜像文件

ngx_auto_config.h:根据环境检查的结果声明的一些宏定义,调用configure文件后生成

ngx_auto_headers.h:版本信息头文件,调用configure文件后生成

ngx_modules.c:非常重要,包含模块的声明代码。在这个文件中,数组ngx_module_t定义了Nginx要加载的模块,可以从此数组看出模块的执行顺序。可以通过修改这个文件去掉一些模块。在开发nginx模块时,也可以通过修改这个文件与Makefile文件实现添加自定义模块的目的。
0 0
原创粉丝点击