
源码解析
wdt3385
这个作者很懒,什么都没留下…
展开
-
nginx源码分析之开篇
阅读从main开始,流程非常清晰/* 系统错误初始化,将构建ngx_sys_errlist */ ngx_strerror_init();/* 选项处理 */ ngx_get_options(argc, argv); /* 时间初始化, 当前时间:ngx_current_msec */ ngx_time_init(); /* 日志初始化 */ log =转载 2013-08-07 11:08:14 · 832 阅读 · 0 评论 -
深入理解nginx读书笔记1——研究 Nginx 前的准备工作
摘自《深入理解nginx》的一些信息,作为以后的查看资料。 2012 年,Nginx 荣获年度云计算开发奖(2012 Cloud Award for Developer of the Year),并成长为世界第二大 Web 服务器。全世界流量最高的前 1000 名网站中,超过 25% 都使用Nginx 来处理海量的互联网请求。Nginx 已经成为业界高性能 Web 服务器的原创 2013-08-07 14:54:20 · 1340 阅读 · 0 评论 -
nginx源码分析-链表
nginx封装的list和我们在学习数据结构时的list略有点区别。nginx的list算是数组和链表的结合。其用以下两个结构来维护一个list。struct ngx_list_part_s { void *elts; ngx_uint_t nelts; ngx_list_part_t *next; }; ty转载 2013-08-07 15:16:08 · 834 阅读 · 0 评论 -
Nginx模块开发入门 (内容更详细)
写的非常好,转自:http://blog.codinglabs.org/articles/intro-of-nginx-module-development.htmlNginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%。与Apache相比,Nginx在高并发情况下具有巨大的性能优势。转载 2013-08-07 17:30:22 · 914 阅读 · 0 评论 -
nginx模块开发入门
目录1 前言2 开发nginx模块之Hello World篇(手把手走一遍)2.1 进行echo模块的功能设计2.2 准备nginx的源代码2.3 准备好nginx的配置文件,越简单越好,并且要打开调试,关闭daemon模式;2.4 创建nginx模块目录2.5 编辑nginx模块的编译相关文件(config)3 Nginx模块开发之入门介绍3.转载 2013-08-07 16:10:27 · 1005 阅读 · 0 评论 -
解码Nginx:双向队列(Queue)
nginx-1.2.5源码文件src/core/ngx_queue.hsrc/core/ngx_queue.c 设计思路Nginx提供一个非常简单的侵入式双向队列(双向链表),也即向每个元素嵌入数据结构的链接结点。这样做的好处在于:1. 省去对数据结构所用内存的管理,进一步减少内存碎片;2. 降低代码复杂度。 另外,通过使用额外的哨兵结点机制,简化了代码。 数据转载 2013-08-12 19:27:15 · 901 阅读 · 0 评论 -
解码Nginx:数组(Array)
源码文件src/core/ngx_array.hsrc/core/ngx_array.c设计思路数组是非常常用的数据结构。为降低使用时的时间开销,Nginx对数组设计做了不少简化:使用从给定内存池中预分配好的储备元素区块;储备元素区块无空闲元素供分配时,尝试从原内存池中分配新的空闲元素,或扩充储备元素区块以完成分配;“分配”,或“压入”,只是取得新的空闲元素的首转载 2013-08-12 20:35:32 · 958 阅读 · 0 评论 -
解码Nginx:列表(List)
源码文件src/core/ngx_list.hsrc/core/ngx_list.c 设计思路Nginx实现的列表接近于数组,但有三点区别: 可以在指定内存块上创建列表数据结构; 储备元素区中无空闲元素时,分配新的储备元素区,挂到单向链表中,而不是替换掉旧的,在扩充容量的同时减少内存处理次数; 不提供ngx_list_destroy(),完全依靠底层内存池管理内存。转载 2013-08-12 20:56:30 · 1046 阅读 · 0 评论 -
Nginx 源码分析-- 浅谈对模块module 的基本认知
分析nginx源码,谈到模块module是必然的。纵观nginx源码,可以说模块module机制是整个nginx的骨架。因此,对nginx的源码进行分析,那么对模块module就需要有一个基本的认知。在浅谈开始,我们要明确nginx模块构架是从编译阶段开始的,不像apache那样可以动态的添加模块,nginx使用的是静态模块。这应该也是nginx为何效率高的原因之一。对nginx的模块认知转载 2013-08-07 18:56:04 · 1129 阅读 · 0 评论 -
Nginx源码分析——日志处理
我看Nginx源代码的时候,感觉整个系统都在传递log指针。log在nginx里是比较关键的。日志和内存分配是最基础的两个起点代码,最好是在自己写的程序框架中早点完善并实现。以免未来要用大量的精力调整。 1. 日志的源代码位置 日志的源代码在src/code/ngx_log.c及ngx_log.h里。 2. 日志的初始化 在main()函数一开始,对一些基础数据进行转载 2013-08-07 15:58:44 · 1859 阅读 · 0 评论 -
keepalived源码浅析——pid文件
Pidfile.h 源码如下: #ifndef _PIDFILE_H#define _PIDFILE_H/* system include */#include #include #include #include #include /* lock pidfile */#define KEEPALIVED_PID_FILE "/var/run/k原创 2013-07-23 17:16:59 · 3907 阅读 · 0 评论 -
keepalived源码浅析——Global_data全局定义块
全局定义模块作用:解析全局模块数据#全局定义块global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个 sysadmin@fire.loc } notification_email_from Alexandre.Cassen@firewall.loc #指定发件人原创 2013-07-23 20:02:38 · 1705 阅读 · 0 评论 -
keepalived源码浅析——Html
Html.h 源码:parse.c中包含 check中的http方式中用到#ifndef _HTML_H#define _HTML_H/* HTTP header tag */#define CONTENT_LENGTH "Content-Length:" // HTTP头标志 例如Content-Length:682L 后面接着换行 /* Prototy原创 2013-07-23 18:29:07 · 1359 阅读 · 0 评论 -
keepalived源码浅析——Daemon进程
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的原创 2013-07-24 14:51:03 · 2703 阅读 · 0 评论 -
keepalived源码浅析——日志
源码:#include #include #include /* Boolean flag - send messages to console as well as syslog */static int log_console = 0; //是否发送信息到控制台voidenable_console_log(void) { log_console = 1;}void原创 2013-07-23 16:36:54 · 2081 阅读 · 0 评论 -
keepalived源码浅析——Global_data全局数据解析
全局定义模块作用:解析全局模块数据#全局定义块global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个 sysadmin@fire.loc } notification_email_from Alexandre.Cassen@firewall.loc #指定发件人原创 2013-07-23 20:31:16 · 2174 阅读 · 0 评论 -
keepalived源码浅析——Memory 内存管理
Memory模块的作用:封装了内存申请和释放函数,打印文件、函数、申请内存大小、代码行数等信息,dubug模式下定位内存泄露位置。Memory.h源码:#ifndef _MEMORY_H#define _MEMORY_H/* system includes */#include #include #include #include #include原创 2013-07-23 19:17:02 · 1867 阅读 · 0 评论 -
keepalived源码浅析——Notify
Notify 模块作用是执行系统外部脚本Notify.h 源码Notify.c的头文件#ifndef _NOTIFY_H#define _NOTIFY_H/* system includes */extern int system_call(char *cmdline);extern void closeall(int fd);extern int notify原创 2013-07-23 18:51:22 · 2212 阅读 · 0 评论 -
keepalived源码浅析——SSL engine
ssl.h源码:#ifndef _SSL_H#define _SSL_H#include /* Prototypes */extern void init_ssl(void);extern int ssl_connect(thread_t *);extern int ssl_printerr(int);extern int ssl_send_request(原创 2013-07-23 18:07:02 · 1835 阅读 · 0 评论 -
keepalived源码浅析——sock
sock.h 源码 #ifndef _SOCK_H#define _SOCK_H/* system includes */#include //需包含openssl库#include /* Engine socket pool element structure */ //sock 池 元素的结构体typedef struct { int fd;原创 2013-07-23 17:50:36 · 1672 阅读 · 0 评论 -
nginx配置中几个宏定义的解释
#define NGX_HTTP_MAIN_CONF 0x02000000#define NGX_HTTP_SRV_CONF 0x04000000#define NGX_HTTP_LOC_CONF 0x08000000#define NGX_HTTP_UPS_CONF 0x10000000#define NGX_HTTP_SIF转载 2013-08-13 11:39:36 · 1919 阅读 · 0 评论