自娱自乐的代码人,专注Java、c、php

GIT:https://github.com/zhuli InitPHP开源框架:http://initphp.com

Nginx源码分析 - 实战篇 - 编写一个挂载到阶段处理的模块

HTTP模块篇,我们讲过Nginx的HTTP阶段处理 《Nginx源码分析 - HTTP模块篇 - ngx_http_core_run_phases函数和HTTP模块的阶段处理PHASE handler》我们代码在《Nginx源码分析 - 实战篇 - 编写一个自定义的模块》的基础上,将定义一个回调...

2017-06-08 13:19:07

阅读数:2105

评论数:2

Nginx源码分析 - 实战篇 - 编写一个自定义的模块

Nginx源码分析 - 实战篇 - 编写一个自定义的模块

2017-06-08 12:03:28

阅读数:1671

评论数:0

Nginx源码分析 - HTTP模块篇 - ngx_http_core_run_phases函数和HTTP模块的阶段处理PHASE handler

上一章我们讲解了HTTP request的解析过程。我们基本知道了Nginx是如何解析HTTP的行和头。这一章我们主要讲解Nginx的阶段处理(PHASE 状态机实现)。阶段处理的概念如何理解,我举个例子:一个HTTP请求过来,除了解析HTTP的行和头外,还需要解析URI的rewrite、接受HT...

2017-06-07 14:49:26

阅读数:2129

评论数:0

Nginx源码分析 - HTTP模块篇 - ngx_http_wait_request_handler函数和HTTP Request解析过程

这一章主要讲解read事件的核心处理函数:ngx_http_wait_request_handler和ngx_http_process_request_linengx_http_init_connection 初始化客户端连接从上一章知道,ngx_event_accept第一次建立连接的时候,会调...

2017-01-05 20:59:43

阅读数:2881

评论数:0

Nginx源码分析 - HTTP模块篇 - ngx_http_optimize_servers函数和TCP连接建立过程

上一章,我们讲解了HTTP模块是如何初始化的。这一章节,主要讲解监听套接字初始化函数ngx_http_optimize_servers和Nginx整个连接的过程监听套接字初始化函数ngx_http_optimize_serversngx_http_optimize_servers主要处理Nginx...

2016-12-18 19:11:42

阅读数:2119

评论数:0

Nginx源码分析 - HTTP模块篇 - ngx_http_block函数和HTTP模块的初始化

前面几章整理了Nginx的事件模块,这一章开始整理HTTP模块。HTTP模块的初始化工作,都在src/http/nginx_http.c 中的ngx_http_block函数中进行的。http模块的配置在看nginx_http_block之前,我们还必须看一下nginx.conf中 HTTP大模块...

2016-12-17 10:14:52

阅读数:1990

评论数:0

Nginx源码分析 - Event事件篇 - epoll事件模块

这一篇主要讲解一下epoll事件模型。Nginx支持多种事件模型:epoll/pool/select/kqueue等。epoll比较常用,我们也比较熟悉。Nginx的epoll事件模块在/event/module/ngx_epoll_module.c

2016-11-03 19:30:33

阅读数:2502

评论数:0

Nginx源码分析 - Event事件篇 - Event模块的进程初始化ngx_event_process_init

前面一篇我们讲解了《Nginx源码分析 - Event事件篇 - Event模块和配置的初始化 》    ,了解了整个Event模块分为:ngx_events_module 事件模块 、ngx_event_core_module 事件核心模块 和 epoll/queue/win32_select事...

2016-09-15 17:59:02

阅读数:2820

评论数:1

Nginx源码分析 - Event事件篇 - Event模块和配置的初始化

Event的模块和配置的初始化,必须得结合我们讲过的两篇文章:《Nginx源码分析 - 主流程篇 - 模块的初始化》     和  《Nginx源码分析 - 主流程篇 - 解析配置文件》   前面我们讲解了模块的初始化以及核心模块的配置文件的解析。而Event的配置解析会比核心模块解析会复杂一些,...

2016-09-04 20:04:31

阅读数:2970

评论数:0

Nginx源码分析 - Event事件篇 - Nginx的Event事件模块概览

前一章,我们讲解了《Nginx源码分析 - 主流程篇 - 多进程的惊群和进程负载均衡处理 》  中实际上已经涉及到了一部分事件模块的概念。细心的可以发现,Nginx的事件都是由nginx_event.c文件中的ngx_process_events_and_timers进程事件分发器这个函数开始的。...

2016-08-22 19:30:35

阅读数:4134

评论数:0

Nginx源码分析 - 主流程篇 - 多进程的惊群和进程负载均衡处理

Linux2.6版本之前还存在对于socket的accept的惊群现象。之后的版本已经解决掉了这个问题。惊群是指多个进程/线程在等待同一资源时,每当资源可用,所有的进程/线程都来竞争资源的现象。Nginx采用的是多进程的模式。假设Linux系统是2.6版本以前,当有一个客户端要连到Nginx服务器...

2016-08-21 14:05:28

阅读数:8087

评论数:1

Nginx源码分析 - 主流程篇 - 多进程实现

默认情况下,Nginx都是多进程的运行模式。Nginx和Memcached不一样,是多进程的模式。采用多进程模式最大的好处:1. 每个进程的资源独立2. 不需要添加各种繁琐的锁了Nginx多进程实现的流程图

2016-08-21 09:15:33

阅读数:2986

评论数:0

Nginx源码分析 - 主流程篇 - 解析配置文件

Nginx源码中比较重要的一块就是配置文件的解析。一般是解析/usr/local/nginx/conf/nginx.conf文件中的配置信息。前一篇文章,我们介绍了Nginx的模块化。Nginx的功能模块都是通过cycle->modules 模块进行管理的。而每个模块都会有自己的配置文件。

2016-07-14 18:47:30

阅读数:5526

评论数:4

Nginx源码分析 - 主流程篇 - 模块的初始化

Nginx是高度模块化的,各个功能都会封装在模块中。例如core模块、HTTP模块等。也可以自定义模块。这一篇文章主要讲解模块的初始化。后续会有一篇文章教你如何编写Nginx的模块。Nginx实现模块管理的代码主要在:/src/core/ngx_module.c文件中。模块的数据结构结构体ngx_...

2016-07-13 17:03:10

阅读数:4780

评论数:1

Nginx源码分析 - 主流程篇 - 全局变量cycle初始化

Nginx的大部分初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量(cycle)展开。本文主要讲解cycle的数据结构以及初始化过程中干了什么事情。 cycle的初始化过程在/src/core/cycle.c文件中。 数据结构 ngx_cycle_t的数据结构 /** * Ngi...

2016-07-11 17:54:21

阅读数:2817

评论数:0

Nginx源码分析 - 主流程篇 - 平滑重启和信号控制

平滑重启 上一篇文章我们分析了Nginx的启动流程。其中ngx_add_inherited_sockets主要用于继承Socket文件句柄。 Nginx有平滑重启的功能,通过平滑重启,可以让用户无感知并且不中断。 #平滑重启 sudo kill -HUP `cat /usr/local/ngi...

2016-07-06 18:56:36

阅读数:3030

评论数:0

Nginx源码分析 - 主流程篇 - Nginx的启动流程

前几篇主要介绍了Nginx比较常用的一些基础数据结构,例如pool,buf,array,list等。通过对Nginx基础数据结构的理解,能更好的帮助我们读懂整个Nginx的源代码。 这一章节开始主要分析Nginx的主流程。 Nginx的主流程的实现函数在./src/core/nginx.c文件中。...

2016-07-05 15:46:12

阅读数:3313

评论数:0

Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c

Nginx的ngx_str_t字符串结构非常简单和好用。 nxg_string.c文件中包含了很多常用的字符串操作方法,具体我们就不讲解了,主要简单来看下Nginx的字符串数据结构 数据结构定义 ngx_str_t 字符串结构 /** * 字符串结构 */ typedef struct { ...

2016-02-17 18:50:12

阅读数:1973

评论数:3

Nginx源码分析 - 基础数据结构篇 - hash表结构 ngx_hash.c

Nginx的hash表结构和我们之前阅读memcached的时候看到的会有很大的差别。 Nginx的hash表结构主要几个特点: 1. 静态只读。当初始化生成hash表结构后,是不能动态修改这个hash表结构的内容。 2. 将内存利用最大化。Nginx的hash表,将内存利用率发挥到了极致,并且很...

2016-02-16 16:25:34

阅读数:1971

评论数:1

Nginx源码分析 - 基础数据结构篇 - 单向链表结构 ngx_list.c

Nginx的list单向链表的结构和Nginx的数组结构Array有点类似。 Nginx的单向链表也是固定了每个元素的大小,并且用单向链表的方式连接。 数据结构定义 ngx_list_part_t 链表节点定义 typedef struct ngx_list_part_s ngx_list_...

2016-02-05 10:11:45

阅读数:1500

评论数:1

提示
确定要删除当前文章?
取消 删除