当前位置: 首页 > news >正文

​​Nginx快速入门-3:工作流程和模块化

1.工作流程

Nginx 在处理客户端请求时,每个连接仅由一个进程进行处理,每个请求仅运行在一个工作流中,工作流被划分为多个阶段(见下图),请求在不同阶段由功能模块进行数据处理,处理结果异常或结束则将结果返回客户端,否则将进入下一阶段。工作进程维护工作流的执行,并通过工作流的状态推动工作流完成请求操作的闭环。 

 

2.模块化

Nginx 一直秉持模块化的理念,其模块化的架构中,除了少量的主流程代码,都是模块。模块代码包括核心模块功能模块两个部分:

  • 核心模块负责维护进程的运行、内存及事件的管理;
  • 功能模块则负责具体功能应用的实现,包括路由分配、内容过滤、网络及磁盘数据读写、代理转发、负载均衡等操作。

① 核心模块(core)

  • 该模块提供了 Nginx 服务运行的基本功能,如 Nginx 的进程管理、CPU 亲缘性、内存管理、配置文件解析、日志等功能。

② 事件模块(event)

  • 该模块负责进行连接处理,提供对不同操作系统的 I/O 网络模型支持和自动根据系统平台选择最有效 I/O 网络模型的方法。

③ HTTP模块(http)

  • 该模块提供 HTTP 处理的核心功能和部分功能模块,HTTP 核心功能维护了 HTTP 多个阶段的工作流,并实现了对各种 HTTP 功能模块的管理和调用。

④ Mail模块(mail)

  • 该模块实现邮件代理功能,代理 IMAP、POP3、SMTP 协议。

⑤ Stream模块(stream)

  • 该模块提供 TCP/UDP 会话的代理和负载相关功能。

⑥ 第三方模块

  • 第三方模块即非 Nginx 官方开发的功能模块,据统计,在开源社区发布的第三方模块已经达到 100 多个,其中 lua-resty、nginx-module-vts 等模块的使用度非常高 

Nginx 早期版本在进行模块编译时,通过编译配置(configure)选项 --with_module 和 --without-module 决定要编译哪些模块,被选择的模块代码与 Nginx 核心代码被编译到同一个 Nginx 二进制文件中,Nginx 文件每次启动时都会加载所有的模块。这是一种静态加载模块的方式。

随着第三方模块的增多和 Nginx Plus 的推出,模块在不重新编译 Nginx 的情况下被动态加载成为迫切的需求。Nginx 从 1.9.11 版本开始支持动态加载模块的功能,该功能使 Nginx 可以在运行时有选择地加载 Nginx 官方或第三方模块。为使动态模块更易于使用,Nginx 官方还提供了 pkg-oss 工具,该工具可为任何动态模块创建可安装的动态模块包。在 Nginx 开源版本的代码中,编译配置选项中含有=dynamic选项,表示支持动态模块加载。

http://www.dtcms.com/a/141650.html

相关文章:

  • day1-小白学习JAVA(mac版)---(jdk安装和环境变量配置)
  • 【Reading Notes】(8.2)Favorite Articles from 2025 February
  • ModbusTCP 转 Profinet 主站网关
  • 从零实现Git安装、使用
  • FairMOT与MCFairMOT算法对比
  • 【web服务_负载均衡Nginx】二、Nginx 核心技术之负载均衡与反向代理
  • c++ static 和 extern 关键字
  • 论文阅读笔记——Mixtral of Experts
  • 期货交易躲过AI捕杀—期货反向跟单策略
  • 51单片机实验四:键盘检测原理及应用实现
  • Linux工具学习之【gcc/g++】
  • 二月公开赛 宝塔搭建Web-ssrfme环境以及漏洞复现
  • 认知,信息技术
  • CSS伪元素
  • C++ 网络层接口设计与实现:基于 Socket 编程
  • IE之路专题11.IS-IS专题
  • 第五章、SpringBoot与消息通信(一)
  • 【Spring Boot】把jar包导入本地系统
  • Java学习手册:Java并发编程最佳实践
  • 代码学习总结(五)
  • spring中如何在一个插入操作执行成功后在执行另一个操作
  • Word 中“母版页”的等效机制
  • pip list | grep paho-mqtt 如何查看这个包的保存路径
  • C++学习:六个月从基础到就业——面向对象编程:接口设计
  • 新手避坑+高效入门:用 DeepSeek 从零攻克编程与网站搭建
  • Docker容器虚拟化存储架构
  • 数据结构之稀疏矩阵与三元组表示法
  • 树莓派超全系列教程文档--(31)config.txt常用选项介绍
  • 游戏一:俄罗斯方块简易版
  • vue3+element-ui-plus+el-table样式