nginx源码学习
文章平均质量分 61
yanziguilai
这个作者很懒,什么都没留下…
展开
-
nginx学习(一)nginx安装
Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%。与Apache相比,Nginx在高并发情况下具有巨大的性能优势。原创 2014-09-13 19:40:37 · 1298 阅读 · 0 评论 -
nginx学习十四 ngx_master_process_cycle(master进程)
ngx_master_process_cycle()函数,这个函数会启动工作进程干活,并且会处理信号量,处理的过程中会杀死或者创建新的进程,具体流程如下a) 阻塞所有nginx关心的信号;b) 设置进程的title(如果你用ps –aux来查看就可以分清master与worker进程,这就是title的作用。);c) 按照ngx_core_conf_t中worker_原创 2014-11-06 20:30:41 · 3560 阅读 · 0 评论 -
nginx学习十三 初始fork和nginx守护进程ngx_daemon
学习nginx已经有一个多月了,觉得越来越吃力了,主要原因自己总结了一下:1平台是基于linux的,以前几乎没有接触过linux,而nginx使用了很多linux的函数;2就是进程,这个东西接触的也很少,linux的多进程更不用说,而现在正好看到这里,觉得异常的吃力,这不看到nginx守护进程的建立,就找资料好好学习一下,所以本文已学习fork为主要内容。好了,先看一下nginx的守护进程的建原创 2014-10-11 20:45:17 · 5124 阅读 · 1 评论 -
nginx学习十二 ngx_cycle_t 和 ngx_init_cycle
在nginx的启动过程中,ngx_init_cycle这个函数做了大部分的初始化工作,而初始化的变量都保存在ngx_cycle_t这个结构体中,为了深入了解这个函数都做了那些初始化工作,就化时间研究了一下,并写下来以便以后参考。1ngx_cycle_t关于这个结构体前面已经简单介绍过,这里不再赘述。2ngx_init_cyclengx_cycle_t * ngx_init_cy原创 2014-10-11 17:28:58 · 2978 阅读 · 0 评论 -
nginx 学习八 高级数据结构之基数树ngx_radix_tree_t
1 nginx的基数树简介基数树是一种二叉查找树,它具备二叉查找树的所有优点:检索、插入、删除节点速度快,支持范围查找,支持遍历等。在nginx中仅geo模块使用了基数树。nginx的基数树使用ngx_radix_tree_t这个结构体表示的。ngx_radix_tree_t要求存储的每个节点都必须以32位整形作为区别任意两个节点的唯一标识。ngx_radix_tree_t基数树会负责分配每个原创 2014-10-01 15:39:07 · 3214 阅读 · 0 评论 -
nginx学习十一 nginx启动流程
今天用了一天的时间看nginx的启动流程,流程还是很复杂,主要的函数调用有十几个之多,通过看源码和上网查资料,弄懂了一些函数,有些函数还在学习中,有些函数还待日后学习,这里记录一下今天所学。加油!1nginx.c启动的程序主要在src/core/nginx.c中,和普通函数一样,main函数是其入口函数:下面我们看看main函数的源代码:int ngx_cdeclmain(int a原创 2014-10-07 19:04:49 · 2470 阅读 · 0 评论 -
nginx学习六 高级数据结构之双向链表ngx_queue_t
1 ngx_queue_t简介ngx_queue_t是nginx提供的一个轻量级的双向链表容器,它不负责存储数据,既不提供数据的内存分配,它只有两个指针负责把数据链入链表,它跟stl提供的queue不同,stl提供的queue帮助用户存储数据,用户只需要相容器里添加数据即可,而ngx_queue_t,用户必须自己提供存储数据的内存,并且必须定义一种数据结构把ngx_queue_t包含在其中原创 2014-09-28 20:48:20 · 1616 阅读 · 0 评论 -
nginx学习七 高级数据结构之动态数组ngx_array_t
1 ngx_array_t结构ngx_array_t是nginx内部使用的数组结构。nginx的数组结构在存储上与大家认知的C语言内置的数组有相似性,比如实际上存储数据的区域也是一大块连续的内存。但是数组除了存储数据的内存以外还包含一些元信息来描述相关的一些信息,并且可以动态增长。下面我们从数组的定义上来详细的了解一下。ngx_array_t的定义位于src/core/ngx_array.原创 2014-09-28 22:48:55 · 3372 阅读 · 0 评论 -
nginx学习十 ngx_cycle_t 、ngx_connection_t 和ngx_listening_t
最近在开始看nginx的事件模块,经常看到ngx_cycle_t、ngx_connection_t和ngx_listening_t这三个结构体,刚开始没在意,看到了就重新上网变量的意思,后来觉得不弄懂这三个结构体或者不清出其中变量的意义实在是无法看下去,因为有很多函数都涉及这三个结构体。因为ngx_listening_t存储监听有关的信息,ngx_connection_t存储连接有关的信息和读写事件,而ngx_cycle_t这个结构体几乎就是核心结构体,在nginx初始化时这个结构体存储了许多东西,而且它有原创 2014-10-06 20:12:22 · 5158 阅读 · 0 评论 -
nginx学习三 nginx配置项解析详解及代码实现
nginx配置项解析详解及代码实现0回顾 在上一节,用nginx简单实现了一个hello world程序:当我们在浏览器中输入lochost/hello ,浏览器就返回:hello world。为什么会这样呢,简单一点说就是当我们请求访问hello这个服务,nginx就会看配置文件中是否有,如果有,根据具体的handler处理后把处理的结果返回给用户,没有就返回not found。原创 2014-09-16 13:13:56 · 5475 阅读 · 0 评论 -
nginx 学习五 filter模块简介和实现一个简单的filter模块
1 nginx过滤模块简介过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处理。它的处理时间在获取回复内容之后,向用户发送响应之前。它的处理过程分为两个阶段,过滤HTTP回复的头部和主体,在这两个阶段可以分别对头部和主体进行修改。2 过滤模块执行顺序2.1 ngx_http_output_(head, body)_filter_pt先看一下ng原创 2014-09-26 22:40:28 · 3705 阅读 · 0 评论 -
nginx 学习(二) hello world 程序
hello wrold1 本节目的2实现步骤 2.1config编写 2.2模块代码实现 2.3配置文件的编写3将模块编译进nginx中1本节的目的本节用nginx来实现一个经典程序hello world,这个程序也是我们学任何编程语言时首先接触的程序,这个程序的目的是初步了解nginx怎样嵌入第三方模块,也是学习nginx的HTTP模块的入门原创 2014-09-13 21:30:23 · 2418 阅读 · 0 评论 -
nginx 学习四 内存池 ngx_pool_t 和内存管理操作
这几天在看nginx,发现凡是有内存申请的地方都有pool这个东东出现,仔细看看,原来pool的类型是ngx_pool_t,是nginx用来做内存管理的,于是就决定看看他的实现。1 nginx内存池相关的结构体 ngx_pool_t定义在core/ngx_palloc.h ngx_palloc.c中,下面是几个主要的结构体 ngx_pool_data_ttypede原创 2014-09-24 19:34:48 · 3853 阅读 · 0 评论 -
nginx单独模块编译的makefile编写
nginx单独模块编译的makefile编写由于开发一个nginx模块时,需要编译本模块的代码,在未开发完,需要单独编译编写的代码,就弄个单独的makefile。代码makefile代码如下:CXX = gccCXXFLAGS +=-g -Wall -WextraNGX_ROOT =/usr/home/yupei1/study/my_test/nginx_0761TARGETS =ngx_http原创 2017-02-19 12:00:41 · 2047 阅读 · 0 评论