Nginx基础架构
北海宇微
生命源于感动,感动让我们有了羁绊,让我们有了不舍,让我们在生去生命那—刻可以笑看人生一一一一我来过
展开
-
Nginx源码初探之基础架构 -进程之间的通信
Nginx进程之间的通信机制介绍 进程之间的通信方式如共享内存,套接字、管道、消息队列、信号等。Nginx框架选择了三种方式:共享内存、套接字、信号来访问共享资源。同时Nginx使用了原子操作、信号量、文件锁来实现各个进程直降安全有序的访问资源。1.共享内存 共享内存是Linux下提供的最基本的进程间的通信方式,他通过mmap或者shmget系统调用内存中创建了一块连续...原创 2020-01-18 17:47:13 · 4179 阅读 · 0 评论 -
Nginx源码初探之upstream机制 -UPSTREAM机制介绍
upstream机制介绍 Nginx访问上游服务器主要是基于upstream机制。upstream机制是事件驱动框架与HTTP框架的综合,它既属于HTTP框架的一部分,又可以处于基于TCP的应用层协议。为了帮助Nginx实现反向代理功能,upstream机制处理提供基本的与上游交互的功能之外,还实现里转发上游应用层协议的响应包体到下游客户端的功能。 Nginx访问上...原创 2020-01-18 13:32:27 · 7262 阅读 · 0 评论 -
Nginx源码初探之HTTP模块 -HTTP框架执行流程
HTTP框架主要是针对基于TCP事件框架解决HTTP的网络传输、解析、组装等问题。主要涉及四个方面。第一,集成事件驱动机制,第二HTTP模块协同,第三HTTP框架允许将一个请求分为多个子请求,第四基础工具接口,比如接受HTTP包体,发送HTTP响应头部,响应包体等。。通过HTTP框架处理HTTP请求,探索HTTO请求在Nginx中的生命周期。HTTP框架执行流程和一般的HTTP请求...原创 2020-01-18 12:31:17 · 4224 阅读 · 0 评论 -
Nginx源码初探之HTTP模块 -HTTP框架处理阶段
Nginx模块化设计使得每个HTTP模块都可以专注于完成一个独立的、简单的功能,而一个请求的完整处理过程可以由无数个HTTP模块共同完成。依照常规的HTTP处理流程,Nginx将这些HTTP模块分为11个处理阶段,对于这11个处理阶段,其中有4个是必须有HTTP框架完成的,其他的7个是可以有HTTP模块协同完成。理解这11个阶段有助于理解HTTP框架对HTTP请求的处理。, 并不是说一...原创 2020-01-18 10:23:15 · 4170 阅读 · 0 评论 -
Nginx源码初探之HTTP模块 -HTTP框架初始化流程
静态HTTP框架启动流程 Nginx模块化设计使得每个HTTP模块都可以专注于完成一个独立的、简单的功能,而一个请求的完整处理过程可以由无数个HTTP模块共同完成。依照常规的HTTP处理流程,Nginx将这些HTTP模块分为11个处理阶段。Nginx框架的初始化工作主要就是解析nginx.conf并且将这11个处理阶段依照顺序和相应的模块关联起来。1.HTTP模块配置介绍 ...原创 2020-01-18 09:13:36 · 4170 阅读 · 0 评论 -
Nginx源码初探之事件模块 -定时器实现
Nginx实现了自己的定时器触发机制,与内核无关。用于弥补当内核调用超时等状况下,系统可以主动触发事件。理解定时器主要有两个方面,一个方面是时间管理,另一个方面是定时器的实现方式。1.时间管理 定时间首先要弄清楚时间管理,Nginx使用全局变量用于缓存时间,这样在获取事件的时候只需要直接读取几个缓存变量就可以了,达到提高了执行效率。缓存的时间更新由ngx_epoll...原创 2020-01-17 09:56:03 · 4118 阅读 · 0 评论 -
Nginx源码初探之事件模块 - epoll事件驱动
Nginx事件驱动是根据操作系统以及操作系统内核设计了很多不同的驱动方式,epoll事件驱动机制是Unix系统的事件驱动模式。本文重点介绍ngx_epoll_module是如何基于Linux内核实现epoll事件驱动模型,实理解Nginx在几十万并发连接下高效利用服务器资源的基本原理。 epoll在处理用户请求时不同于select或者poll的模式(采用轮询来处理的,...原创 2020-01-16 22:18:55 · 4556 阅读 · 0 评论 -
Nginx源码初探之事件模块 - 连接基数数据结构
Nginx事件处理模型是Nginx事件处理的核心,充分体现了最简业务原则和分段处理的架构理念。作为Web服务器,Nignx每一个用户请求至少对于一个TCP连接,一个TCP连接至少需要一个读事件和一个写事件(分段原则的体现,即使很简单很明确的需求也会分段处理。)。在这里我们必须理解Nginx事件的定义和连接的定义。事件定义的基本数据结构是ngx_event_t,连接定义的基本数据结构...原创 2020-01-16 17:01:18 · 4263 阅读 · 0 评论 -
Nginx源码初探之基础架构-启动流程
Nginx基础框架介绍 Nginx采用事件驱动架构,多阶段请求异步处理。,简单的说就是事件源产生事件,事件收集器收集事件,分发器分发事件,处理器注册并消费事件。对比传统WEb服务器而言,传统WEB服务器通过进程或许线程处理事件,请求事件从产生到结束处理进程独占内存、CPU、网络等资源。而Nginx服务器,只有事件收集器、分发器可以占有资源,事件会分发给消费模块使用当前进程处理。传统w...原创 2020-01-14 15:32:43 · 6418 阅读 · 0 评论 -
Nginx架构之模块化结构体系
备注:随着版本的不同Nginx的版本也会有所不同,比如STREAM模块的出现。具体情况可以参考《Nginx源码初探 -之数据结构 - 模块数据结构》当理解了Nginx模块的设计之后,再看Nginx的结构体系就会有种豁然明朗的感觉。 相比传统Web服务器,Nginx表现的更具有专业性。在架构上Nginx受到各种操作系统中高级事件机制处理模式的启发,Nginx实现了整体基于m...原创 2020-01-09 10:03:17 · 2913 阅读 · 0 评论 -
Nginx源码初探之基础架构-web服务器的约束
软件设计一方面是功能设计,一方面是架构设计。功能设计主要就是满足软件需要提供的功能,支撑的服务。比如Nginx是一款Web服务器,那么他的功能就必须满足Web传输协议的各种约束,实现Web服务具有的各种功能。架构设计主要是解决如何提高更高效的服务,如何更低成本的维护,如何让服务更稳定健硕这些问题。他有一系列的规则和约束,本文旨在梳理Nginx服务器在架构设计方面(基本上也是软件设计...原创 2020-01-14 10:28:40 · 4077 阅读 · 0 评论