nginx0.1专题

nginx0.1.0之http模块初始化源码分析(2)

本文讲解http各个模块create_srv_conf和create_loc_conf钩子,还有指令的解析。 各模块的create_srv_conf和create_loc_conf函数逻辑都类似,不一一列举,执行完后内存视图是。 下面是指令的解析。 1 access模块 1 allow、deny指令 // 每次遇到allow或者deny命令的时候执行的回调static char *ngx

nginx0.1.0之http模块初始化源码分析

http模块的初始化类似event模块,初始化的起点在解析到http指令的时候。对应的处理函数是ngx_http_block,因为该函数比较长,所以我们分段解析。第一部分先解析http模块的pre_conf、create_main_conf函数的实现。 static char *ngx_http_block(ngx_conf_t *cf, ngx_command_t *cmd, void *co

nginx0.1.0之event模块初始化源码分析(3)

前面已经分析了event初始化的整体流程和第一步create_conf,接下来看一下第二步ngx_conf_parse。这里不分析该函数的代码,该函数主要是遍历配置文件的内容,然后读取命令和参数。最后匹配nginx所有模块的配置,找到处理该指令的函数。我们首先看一下event模块中ngx_event_core_module模块的指令配置。 static ngx_command_t ngx_ev

nginx0.1.0之event模块初始化源码分析(2)

本文分析nginx的event在初始化时的第一个步骤,就是执行每个类型为NGX_EVENT_MODULE的模块的create_conf函数。该版本一共有8个这样的模块。下面我们看一下各个模块create_conf函数的代码。 这是ngx_event_core_module模块的create_conf函数。 // 创建存储事件模块配置的结构体static void *ngx_event_crea

nginx0.1.0之event模块初始化源码分析(1)

下面是nginx中几个重要的数据结构。 struct ngx_command_s {ngx_str_t name; // 命令名字int type; // 命令的属性,参数个数、上下文等char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); // 处理该命令的函数int

nginx数据结构之ngx_list分析(nginx0.1.0)

/** Copyright (C) Igor Sysoev*/#ifndef _NGX_LIST_H_INCLUDED_#define _NGX_LIST_H_INCLUDED_#include <ngx_config.h>#include <ngx_core.h>typedef struct ngx_list_part_s ngx_list_part_t;struct ngx_list_