Nginx核心流程及模块介绍

Nginx核心流程及模块介绍

1. Nginx简介以及特色

Nginx简介:nginx

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

  • 俄罗斯程序员Igor Sysoev于2002年开始
  • Nginx是增加最快的Web服务器,市场份额已达33.3%
  • 全球使用量排名第二2011年成立商业公司

Nginx社区分支:web

  • 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 协程
  • 非阻塞
  • 业务逻辑以天然逻辑书写
 
相关文章
相关标签/搜索