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

    文章

    2696

    浏览量

    47437
  • Web服务器
    +关注

    关注

    0

    文章

    138

    浏览量

    24399
  • nginx
    +关注

    关注

    0

    文章

    149

    浏览量

    12171

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

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

收藏 人收藏

    评论

    相关推荐

    一份DAC60508MCRTER的驱动代码

    一份DAC60508MCRTER的驱动代码 邮箱2212202914@qq.com 感谢大佬
    发表于 12-18 09:19

    Nginx日常运维方法Linux版

    Nginx安装目录?   whereis nginx   如图: 执行目录:/usr/sbin/nginx 模块所在目录:/usr/lib64/n
    的头像 发表于 12-06 16:38 150次阅读
    <b class='flag-5'>Nginx</b>日常运维方法Linux版

    确保网站无缝运行:Keepalived高可用与Nginx集成实战

    目录 keepalived高可用(nginx) keepalived简介 keepalived的重要功能 keepalived高可用架构图 keepalived工作原理描述 keepalived实现
    的头像 发表于 11-27 09:08 267次阅读
    确保网站无缝运行:Keepalived高可用与<b class='flag-5'>Nginx</b>集成<b class='flag-5'>实战</b>

    nginx负载均衡配置介绍

    代理 安装Keepalived 配置Keepalived 编写脚本监控Keepalived和nginx的状态 配置keepalived加入监控脚本的配置 nginx负载均衡介绍 nginx应用场景之
    的头像 发表于 11-10 13:39 232次阅读
    <b class='flag-5'>nginx</b>负载均衡配置介绍

    麻烦厂家发一份CS1237-SO的驱动程序给我STC版本的

    麻烦厂家发一份CS1237-SO的驱动程序给我STC版本的741891100@qq.com
    发表于 08-23 14:48

    一份CSU32P20的ADC范例程序

    一份CSU32P20的ADC范例程序,邮箱2605822110@qq.com
    发表于 08-10 18:04

    nginx重启命令linux步骤是什么?

    ./nginx -s reload 即可   方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务   Nginx的整体
    发表于 07-11 17:13

    nginx重启命令linux步骤是什么?

    ./nginx -s reload 即可   方法二:查找当前nginx进程号,然后输入命令:kill -HUP 进程号 实现重启nginx服务   Nginx的整体
    发表于 07-10 16:40

    给龙芯公司的些建议

    者初期的时候最疑惑的就是不知怎么下载得到源码(这个问题你们已解决),接下来就是怎么编译,以及怎么下载到开发板里去,在开发初期如果有这样一份文档,就是对我们
    发表于 06-21 16:58

    一份CS1237基于STM32硬件外设SPI的代码

    一份CS1237基于STM32硬件外设SPI的代码
    发表于 05-10 10:51

    求助一份电路图

    各位大佬,谁有这个开发板的电路图,有的话可以分享给小弟一份
    发表于 05-07 12:12

    一份CS1237的驱动程序代码。

    一份STMM32F103C8T6驱动CS1237的驱动程序,那位大佬发下。邮箱2864165038@qq.com
    发表于 04-20 10:56

    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