博客专栏  >  架构   >  Nginx源码阅读

Nginx源码阅读

Nginx是一个 Web服务器,也可以用作反向代理,负载平衡器和 HTTP缓存。Nginx 是免费的开源软件,根据类似 BSD许可证的条款发布。大部分 Web服务器通常使用 NGINX 作为负载均衡器。这里主要学习其整体架构、进程模型、事件模块、负载均衡等。

关注
1 已关注
15篇博文
  • nginx源码阅读(十五).事件模块小结(从解析配置到事件的处理)

    前言 配置项结构体的创建及赋值 初始化工作 处理事件 小结 前言本小节主要是整理一下前几节分析的nginx的核心模块的ngx_events_module以及事件模块,关于事件模块什么时候初始化以及事件...

    2017-11-13 09:10
    238
  • nginx源码阅读(十四).惊群问题的解决

    前言 accept导致的惊群问题 epoll导致的惊群问题 多个进程共用一个epfd 多个进程有自己的epfd 小结前言本小节将看到nginx中解决惊群现象的方法。所谓惊群现象,简单的来说就是当多个进...

    2017-11-11 22:31
    208
  • nginx源码阅读(十三).新建连接并处理就绪事件

    前言 如何建立新连接 建立新连接的回调函数 处理事件 小结前言本小节主要讨论事件模块中如何接受新连接,其中涉及到了惊群以及负载均衡的处理。如何建立新连接之前在分析ngx_event_process_i...

    2017-11-09 22:12
    161
  • nginx源码阅读(十二).定时器及超时事件的管理

    前言 时间缓存 缓存时间的精度 定时器的实现 小结前言本小节将分析nginx定时器以及时间管理部分的知识,当事件超时时,会触发nginx中的超时机制进行处理。nginx的定时器的底层实现是使用的红黑树...

    2017-11-08 16:15
    267
  • nginx源码阅读(十一).ngx_epoll_module模块(上)

    前言 模块的通用接口 感兴趣的配置项 存储配置项的结构体 事件模块的通用接口 小结 前言事件模块中有封装了多种I/O多路复用机制的模块,这里只分析epoll对应的ngx_epoll_module模块,...

    2017-11-07 21:55
    329
  • nginx源码阅读(十).ngx_event_core_module模块

    前言 所有模块的通用接口ngx_module_t 感兴趣的配置项ngx_event_core_commands 存储配置项的结构体ngx_event_conf_t 事件模块的通用性接口ngx_even...

    2017-11-06 21:31
    288
  • nginx源码阅读(九).事件及连接的定义、连接池

    前言 事件的定义 连接的定义 关于连接池 小结前言本小节将分析事件模块中事件的定义以及连接池等相关定义,方便我们后面对事件模块中的模块进行分析。事件的定义每个事件由ngx_event_s表示:stru...

    2017-11-06 08:52
    288
  • nginx源码阅读(八).ngx_events_module模块

    前言在上一小节中我们对模块的整体有了一定的把握,本小节将进入到事件模块的分析中,了解nginx是如何收集、管理、分发事件的。nginx将网络事件以及定时事件集成到一起进行管理,由于各平台的I/O多路复...

    2017-11-04 22:01
    284
  • nginx源码阅读(七).nginx的模块化设计

    前言高度模块化是nginx的一个特点,在正式进入到具体的模块之前,有必要从整体把握各模块之间联系与nginx对模块的控制。在前面的分析中其实已经使用了模块中提供的方法,比如worker进程的工作循环中...

    2017-11-03 21:43
    209
  • nginx源码阅读(六).内存池

    前言本小节中,我们将看到内存池的实现。由于nginx是由c语言实现,并没有垃圾回收机制,比较容易导致memory leak,因此nginx实现了自己的内存池,将内存的管理和释放交给内存池,而需要申请内...

    2017-11-02 22:05
    143
  • nginx源码阅读(五).worker进程的工作循环

    前言在上一小节中,我们看到了nginx是如何使用master进程创建子进程,以及存储子进程的状态,也知道了进程间通信采用的是socketpair机制。接下来我们将重点分析ngx_spawn_proce...

    2017-11-01 21:27
    157
  • nginx源码阅读(四).创建子进程(worker和cache)

    前言在上一小节中,我们主要分析了master进程的工作循环。本小结中,我们将看到nginx是如何创建worker进程的。在上一小节中分析master进程的工作循环时,调用了ngx_start_work...

    2017-10-31 19:50
    213
  • nginx源码阅读(三).master进程的工作循环

    前言在上一个小节中,我们分析了一下nginx的初始化工作,在最后部分nginx进入多进程工作模式/单进程模式。单进程模式一般用于调试,实用性不高。本小节将分析master和worker进程所做的一些工...

    2017-10-30 21:59
    288
  • nginx源码阅读(二).初始化:main函数及ngx_init_cycle函数

    前言在分析源码时,我们可以先把握主干,然后其他部分再挨个分析就行了。接下来我们先看看nginx的main函数干了些什么。main函数这里先介绍一些下面会遇到的变量类型:ngx_int_t: typed...

    2017-10-29 21:45
    193
  • nginx源码阅读(一).综述

    前言nginx作为一款开源的轻量级高性能web服务器,是非常值得立志从事服务端开发方向的人学习的。现今nginx的最新版本是nginx-1.13.6,代码量也日渐庞大,但是由于其核心思想并没改变,为了...

    2017-10-28 09:33
    291

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部