Nginx核心流程及模块介绍

1. Nginx简介以及特点

Nginx简介:

Nginx (engine x) 是一个高性能的web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器

  • 俄罗斯程序员Igor Sysoev于2002年开始

  • Nginx是增长最快的Web服务器,市场份额已达33.3%

  • 全球使用量排名第二2011年成立商业公司

Nginx社区分支:

  • Openresty作者@agentzh(章宜春)开发的,最大特点是引入了ngx_lua模块,支持使用lua开发插件,并且集合了很多丰富的模块,以及lua库。

  • Tengine主要是淘宝团队开发。特点是融入了因淘宝自身的一些业务带来的新功能。

  • Nginx官方版本,更新迭代比较快,并且提供免费版本和商业版本。

Nginx源码结构:

  • 代码量大约11万行C代码

  • 源代码目录结构

    • core (主干和基础设置)

    • event (事件驱动模型和不同的IO复用模块)

    • http (HTTP服务器和模块)

    • mail (邮件代理服务器和模块)

    • os (操作系统相关的实现)

    • misc (杂项)

Nginx特点:

  • 反向代理,负载均衡器

  • 高可靠性、单master多worker模式

  • 高可扩展性、高度模块化

  • 非阻塞

  • 事件驱动

  • 低内存消耗

  • 热部署

2. Nginx应用场景

场景如下:

  • 静态文件服务器

  • 反向代理,负载均衡

  • 安全防御

  • 智能路由(企业级灰度测试、地图POI一键切流)

  • 灰度发布

  • 静态化

  • 消息推送

  • 图片实时压缩

  • 防盗链

3. Nginx框架模型及流程介绍

进程组件角色:

  • master进程

    • 监视工作进程的状态

    • 当工作进程死掉后重启一个新的

    • 处理信号和通知工作进程

  • worker进程

    • 处理客户端请求

    • 从主进程处获得信号做相应的事情

  • cache loader进程

    • 加载缓存索引文件信息,然后退出

  • cache manager进程

    • 管理磁盘的缓存大小,超过预定值大小后最少使用数据将被删除

框架模型:

 
image.png

框架模型流程:

 
image.png

框架模型流程:

 
image.png
 
image.png

核心流程图:

 
master初始化流程.png
 
image.png

核心流程图:

 
worker进程初始化流程.png
 
image.png

http请求流程:

 
HTTP请求流程.png
 
image.png

Upstream设计:

  • 访问第三方Server服务器

  • 底层HTTP通信非常完善

  • 异步非阻塞

  • 上下游内存零拷贝,节省内存

  • 支持自定义模块开发

 
image.png

upstream流程:

 
upstream流程.png
 
image.png

4. Nginx定制化模块开发

Nginx的模块化设计特点:

  • 高度抽象的模块接口

  • 模块接口非常简单,具有很高的灵活性

  • 配置模块的设计

  • 核心模块接口的简单化

  • 多层次、多类别的模块设计

 
image.png

核心模块:

 
Nginx核心模块.png

handler模块:

  • 接受来自客户端的请求并构建响应头和响应体。

     
    handler.png

filter模块:

  • 过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处理。它的处理时间在获取回复内容之后,向用户发送响应之前。

     
    filter.png

upstream模块:

  • 使nginx跨越单机的限制,完成网络数据的接收、处理和转发,纯异步的访问后端服务。

     
    upstream.png

load_balance:

  • 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

     
    load_balabce.png

ngx_lua模块:

  • 脚本语言

  • 内存开销小

  • 运行速度快

  • 强大的 Lua 协程

  • 非阻塞

  • 业务逻辑以自然逻辑书写

 
(0)

相关推荐

  • 深入理解Nginx模块开发与架构解析

    一.研究Nginx前的准备工作 1.Nginx特点:更快.高扩展性.高可靠性.低内存消耗.单机支持10万以上的并发连接.热部署.最自由的BSD许可协议 2.退出nginx nginx -s stop ...

  • 核心银行系统 之三 核心业务模块介绍

    关键字:银行核心系统 核心 业务模块 介绍 字数:4600字/建议阅读时间:12分钟 作者:CS1026 这篇文章来自前辈CS1026的分享,经过笔者同意后首发于微信公众号平台:小代嘚吧嘚,专注于分享 ...

  • 办理蓝牙FCC认证的测试流程与项目介绍

    根据蓝牙版本的不同,目前蓝牙版本分为V2.0,V2.1,V3.0和V4.0不同版本.芯片大都喜欢采用CSR芯片.在进行蓝牙测试时需要由制造方提供工程样机和定频控制软件. 具体测试项目包括: 1.RF功 ...

  • 华为LTC/IPD/ITR三大核心流程变革一篇文章就全明白啦!

    华为发展到今天,取得了一些成就,在华为工作十多年的我,个人认为,华为居安思危地持续管理变革创新是关键因素!华为大大小小的流程变革项目已做几十个,所花费的咨询顾问费用也已经几十亿,每天穿梭于华为的外部管 ...

  • 好发表的生态园林景观类核心期刊(刊物介绍及投稿技巧))

    好发表的生态园林景观类核心期刊有哪些?无论是评职评优优先或多或少都需要发表核心期刊,核心期刊的类别也是比较多的,在投稿时有什么技巧?以下列举的几本刊物,希望对大家有所帮助. 一.<植物保护> ...

  • 16S测序全新分析流程QIIME2的介绍

    16S rRNA测序是利用高通量测序技术,通过检查环境微生物(主要是细菌)16S特定可变区的丰度,以此鉴定生物标本细菌群落的分类及丰度的一项技术.16S rDNA指细菌基因组中编码核糖体16S rRN ...

  • Nginx的RTMP直播模块开发参数说明和配置范例

    现在直播也是非常流行的一种应用场景,各种应用和H5页面上也经常用到直播.目前直播技术以RTMP方式是非常成熟的,虽然有10秒左右的延迟.但是这完全不影响直播的效果和稳定性.这次我们就以Nginx下的R ...

  • 什么是核心流程?提供12个判断标准给你

    这是流程+研习社的第289篇原创文章,欢迎转发分享.新来的朋友别忘了点击上面的蓝色(流程研习社)加关注,通过[书与文章]查看所有[历史好文].欢迎投稿 630011134@qq.com,参与众筹写书计 ...

  • 华政刑法考研之考研流程和科目介绍

    本专业考研流程和考试科目总体介绍1.考研流程(1)一般流程序号事件时间1.大纲出来时间9月中旬2.预报名9月底(不参加也没事)3.网上正式报名10月10号-31号二十天4.现场确认11月8号-10号三 ...

  • 华为流程管理经验分享:华为LTC流程IPD流程ITR流程三大核心流程变革一篇文章概况总结!

    华为发展到今天,取得了一些成就,在华为工作十多年的许浩明老师认为,华为居安思危地持续管理变革创新是关键因素!华为大大小小的流程变革项目已做几十个,所花费的咨询顾问费用也已经几十亿,每天穿梭于华为的外部 ...