前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx的源码结构和模块初始化

Nginx的源码结构和模块初始化

作者头像
Java后端技术
发布2018-08-09 11:57:42
5150
发布2018-08-09 11:57:42
举报
文章被收录于专栏:Java后端技术栈

上一篇(Nginx初探 )已经介绍了Nginx的基本功能,也介绍了在Windows下的安装和简单的实现负载均衡,下边主要学习一下Nginx的源码结构。

Nginx的源码src目录结构(未进行编译安装)

环境:nginx-1.8.0 + Cent OS 7.0 (可以使用 yum install tree 来安装tree命令,就可以显示出文件的树结构),结果如下:

从上边的源码中可以看出共有10 directories, 265 files,Nginx的主要模块是Core、event、http、mail、misc(杂项,包含多种功能)、os这几个部分,并且根据源代码的命名也可以大致的猜测出其所代表的功能。

建议大家下载其源码,大致看一下,这样的话,也能够更好的理清楚Nginx的功能组成。

举个简单的例子,Core模块下的第一个文件nginx.c的一部分代码如下:

从上述可以看出,ngx_core_commands[]这一个数组定义了Core模块下所使用的全部设置命令(这也是后边学习Core模块的时候需要介绍的)。

并且还有event–modules下边明确的列出了几种事件的模型,也是后边在学习该模块的时候需要学习的地方。 由于对shell脚本语言和C掌握的程度有限,不对源码做过多的解释。

对源码进行编译

如果使用的CentOS的话需要先下载一些基础软件,可以使用命令进行下载: 1、为了支持rewrite功能,我们需要安装pcre

2.安装openssl

需要ssl的支持,如果不需要ssl支持,请跳过这一步

3.gzip 类库安装

(注:如果是Ubuntu的话,直接使用命令sudo apt-get install nginx 进行下载即可)

4、准备好源码,进行解压:tar -zxvf nginx-1.8.0.tar.gz 5、编译和安装,执行如下命令:

–with-http_stub_status_module:支持nginx状态查询 –with-http_ssl_module:支持https –with-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持 –with-pcre:为了支持rewrite重写功能,必须制定pcre

(如果这里有提示还需要安装其他的包,安装即可)

设置之后,执行make 结束之后执行 make install

启动命令在/usr/local/nginx-1.8.0/sbin文件下

(如果在Ubuntu的话,可能是在/usr/sbin目录下)

分析编译之后的文件:

/usr/local/nginx-1.8.0目录下:这是编译之后生成的配置等文件:

在conf目录下有几个配置文件,该配置文件用于控制Nginx服务器的基本功能,其中nginx.conf为:

从上边的内容中可以看出,每一个配置属性的意思大致可以看出来,这一点会在后边的分模块学习时详细说明。

同样的在编译之后,会在原来的Nginx代码包中生成一个objs的目录,其中,生成的ngx_modules.c文件中,重新集中申明(使用extern关键字)了nginx配置的所有模块,这些模块可通过编译前的configure命令进行配置,即设置哪些模块需要编译,哪些不被编译。 如下。包含了执行编译过程中的内容:

这些模块均是在此处用extern进行申明,以表明其他模块可以访问,而对其本身的定义和初始化ngx_module_t结构在其对应的.c文件中进行。例如,ngx_core_module模块便是在./src/core/nginx.c文件中定义并进行静态初始化。实际上,ngx_core_module是一个全局的结构体对象,其他模块类同。如下:

版权声明

Java后端技术所推送文章,为本人原创、网上收集或其他作者投稿,对于网上收集部分除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,我们会在24小时内删除处理,谢谢!^_^ QQ:1573876303。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后端技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对源码进行编译
  • 分析编译之后的文件:
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档