热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nginx架构及核心流程及模块介绍

1.Nginx简介以及特点Nginx简介:Nginx(enginex)是一个高性

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进程

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

框架模型:

框架模型流程:

框架模型流程:

核心流程图:

核心流程图:

http请求流程:

Upstream设计:

  • 访问第三方Server服务器

  • 底层HTTP通信非常完善

  • 异步非阻塞

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

  • 支持自定义模块开发

upstream流程:

4. Nginx定制化模块开发

Nginx的模块化设计特点:

  • 高度抽象的模块接口

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

  • 配置模块的设计

  • 核心模块接口的简单化

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

核心模块:

handler模块:
- 接受来自客户端的请求并构建响应头和响应体。

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

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

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

ngx_lua模块:

  • 脚本语言

  • 内存开销小

  • 运行速度快

  • 强大的 Lua 协程

  • 非阻塞

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




推荐阅读
author-avatar
邱walz_297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有