0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一份Nginx模块开发与架构解析实战文档

Linux爱好者 来源:Linux爱好者 作者:Linux爱好者 2021-03-03 15:36 次阅读

Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

今天分享一份Nginx模块开发与架构解析实战文档,文档35.6 MB内容全部可复制!相信看完后对Nginx会有更深入的了解。

这份文档的价值

资料共三部分,首先通过介绍官方Nginx的基本用法和配置规则,帮助大家了解一般Nginx模块的用法,然后重点介绍了如何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发一个功能复杂的模块所需要了解的各种知识,并对内存池的实现细节及TCP协议进行了详细介绍;接着,综合Nginx框架代码分析了Nginx架构的设计理念和技巧,此外,还新增了如何在模块中支持HTTP变量,以及与slab共享内存等相关的内容。

通过这份资料,你可以学到:

对Nginx及如何将它搭建成一个高性能的Web服务器有深入的了解。

通过开发特定的HTTP模块实现高性能Web服务器。

了解Nginx的架构设计,学习其怎样充分使用服务器上的硬件资源。

了解如何快速定位、修复Nginx中深层次Bug。

利用Nginx提供的框架,设计出任何基于TCP的、无阻塞的、易于扩展的服务器。

由于内容过多,在此只以截图展示部分内容,详细完整版的文档网盘链接和提取码请见文末。

第1章研究Nginx前的准备工作:

什么是Nginx?它有哪些特点?我们选择Nginx的理由是什么?如何编译安装Nginx?这种安装方式背后隐藏的又是什么样的思想呢?本章将会回答上述问题。

第2章Nginx的配置:

通过本章的学习,大家可以熟练地配置一个静态Web服务器:对影响Web服务器性能的各个配置项有深入的理解:对配置语法有全面的了解。通过互联网或其他途径得到任意模块的配置说明,然后可通过修改nginx. conf文件来使用这些模块的功能。

第3章开发一个简单的HTTP模块:

本章不会深入探讨HTTP模块与Nginx的各个核心模块是如何配合工作的,而且这部分提到的每个接口将只涉及用法而不涉及实现原理,在第3部分我们才会进一步阐述本章提到的许多接口是如何实现异步访问的。

第4章配置、error日志和请求上下文:

编写全异步的HTTP模块时,必须要有上下文来维持一个请求的必要信息,在4.5节中,首先探讨请求的上下文与全异步实现的Nginx服务之间的关系,以及如何使用HTTP上下文,然后简单描述HTTP框架是如何管理请求的上下文结构体的。

第5章访问第三方服务:

本章仍然以mytest模块为例进行说明,但会扩展mytest的功能。注意,文中没有提及的代码(如定义nytest模块)都与第3章完全相同。

第6章开发一个简单的HTTP过滤模块:

介绍如何开发HTTP过滤模块。

第7章Nginx提供的高级数据结构:

将介绍Nginx实现的6个基本容器,熟练使用这6个基本容器,将会大大提高开发Nginx模块的效率,也可以更加方便地实现复杂的功能。

第三部分针对高级读者,这是本书的重点,彻底解析Nginx架构,深入探讨Nginx各种设计的目的与意义,并对第二部分使用到的一些特性进行代码设计实现上的探索。读者读完本部分,会对整个Nginx架构有清晰的认识,可以编写各种模块(不局限于http模块)插入到Nginx中,从而定制自己的Nginx。

第8章Nginx基础架构:

实现高性能、定制化的Web服务器功能。

第9章事件模块:

全面探讨Nginx的事件驱动机制是如何工作的。

第10章HTTP框架的初始化:

将探讨事件消费模块的大户”HTP 模块。Nginx作为Web服务器,其HTTP模块的数量远超过了其他4类模块(核心模块、事件模块、配置模块、邮件模块),其代码规模也同样遥遥领先。

第11章HTTP框架的执行流程:

介绍动态的HTTP框架,主要探讨在请求的生命周期中,基于事件驱动的HTTP框架是怎样处理网络事件以及怎样集成各个HTTP模块来共同处理HTTP请求的,同时,还会介绍为了简化HTTP模块的开发难度而提供的多个非阻塞的异步方法。

第12章upstream机制的设计与实现:

讨论ustream机制的设计和实现,以此帮助大家全面了解如何使用upstream访间上游服务器。

第13章邮件代理模块:

介绍邮件代理功能到底做了哪些事情,会分析Nginx如何实现邮件代理功能。

第14章进程间的通信机制:

这部分并不是说明Linux F有哪些进程通信方式,而是为了说明Nginx选择了哪些方式来同Bmaster进程和多个worker进程间的数据,Nginx框架是怎样重新封装了这些进程间通信方式

第15章变量:

Nginx有许多功能体现在nginx.com这个脚本式的配置文件里,这些配置项的格式五花八门、风格各异,原因是它们都由各Nginx模块自定义,并没有什么统一的标准,这在第4章已经提及。

第16章slab共享内存:

本章除了说明如何使用它以外,同时还会详细介绍实现原理,从中我们可以发现它的设计初衷及不适用的场景。Slab实现的源代码非常高效,然而却也有些生涩,本章会较多地通过源代码说明各种二进制位操作,以帮助大家学习slab的编码艺术。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2484

    浏览量

    46525
  • Web服务器
    +关注

    关注

    0

    文章

    137

    浏览量

    24227
  • nginx
    +关注

    关注

    0

    文章

    135

    浏览量

    11985

原文标题:Nginx 模块开发与架构全方位深度解析

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32 IAP升级,KEIL如何一份代码运行于两个APP区?

    校验。目前的问题是,没办法使用一份代码运行两个APP。两个APP,则IAP跳转不同的APP,跳转的地址不样,则代码中需要设置的中断向量表及链接地址。这样,一份代码就不行了,而且两
    发表于 03-26 07:20

    一份明伟DRP—240—24电源盒

    一份明伟DRP—240—24电源盒电路图
    发表于 02-08 16:47

    一份CS32L010最新资料

    需要一份最新的CS32L010 ARM® Cortex®-M0 32 位微控制器用户参考手册,还有例程,邮箱43952588@qq.com
    发表于 01-23 16:26

    docker微服务架构实战

    随着云计算和容器化技术的快速发展,微服务架构在软件开发领域中变得越来越流行。微服务架构将一个大型的软件应用拆分成多个小型的、独立部署的服务,每个服务负责独立的业务功能。其中,Docker作为一个流行
    的头像 发表于 11-23 09:26 312次阅读

    请发一份CS1237使用例程,邮箱294259193@qq.com,谢谢

    请发一份CS1237使用例程,邮箱294259193@qq.com,谢谢
    发表于 10-11 09:26

    版主给一份CS32F031的SDK 谢谢

    版主给一份CS32F031的SDK 谢谢。
    发表于 10-06 16:01

    求提供一份K210的开发板硬件设计参考

    恳请提供一份K210的开发板硬件设计参考,和一份Datasheet,谢谢
    发表于 09-13 08:30

    你好,请问CS1239的代码能发一份么?

    你好,请问CS1239的代码能发一份么?1393854717@qq.com
    发表于 09-05 08:55

    搭建Keepalived+Lvs+Nginx高可用集群负载均衡

    nginx包,推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境   yum install gcc-c++   (2)安装PCRE库,用于解析正则表达式   yum install 
    的头像 发表于 06-25 15:39 1806次阅读
    搭建Keepalived+Lvs+<b class='flag-5'>Nginx</b>高可用集群负载均衡

    请发一份cs1237 stm32的历程,高输出速率的1280Hz

    请发一份cs1237 stm32的历程,高输出速率的1280Hz
    发表于 06-23 18:00

    求大家给一份M484的规格书

    求大家给一份M484的规格书,在官网找不到
    发表于 06-19 07:35

    请问有CS1239的代码(STM32 IO模拟SPI)吗,能发一份吗?

    请问有CS1239的代码(STM32IO模拟SPI)吗,能发一份吗?2535523757@qq.com
    发表于 06-13 12:20

    求助一份XD卡引脚定义图

    求助一份XD卡引脚定义图,和主控方案,感谢感谢
    发表于 05-30 18:54

    请发一份cs32g020的SDK到maolihu@nxzx.wecom.work

    能不能发一份cs32g020的demoSDK等资料到maolihu@nxzx.wecom.work万分感谢
    发表于 05-29 22:32

    Nginx搭建流行架构LNMP的步骤

    LNMP是一套技术的组合,L=Linux、N=Nginx、M=MySQL(MyriDB)、P=PHP(Python)
    的头像 发表于 05-22 18:19 700次阅读
    <b class='flag-5'>Nginx</b>搭建流行<b class='flag-5'>架构</b>LNMP的步骤