nginx

nginx 源码的特点是用了很多回调函数,阅读起来非常麻烦,因为不知道当前这个 hanlder 到底对应哪个函数。 在正式开始研究这 11 个阶段之前,我们先看几个结构体,然
在上一篇博客 Linux 共享内存以及 nginx 中的实现的示例中,我们看到每次多个进程同时对共享内存中的 count 加一,导致每次运行结果都不一样,那么解决的方法就是对临
table {:toc} *** Lua 是一门小巧的编程语言,但麻雀虽小五脏俱全,而且与 C 语言的交互非常友好,所以有人称它是 “胶水语言”。最近在研究 nginx,另一个广泛应
table {:toc} *** 过滤模块基本概念 普通的 HTTP 模块和 HTTP filter 模块有很大的不同。普通模块,例如上篇博客提到的 hello world 模块,可以介入 nginx http 框架的 7 个处理阶段,绝大多数情况
table {:toc} *** 在前面的两篇博客中我们看到,无论是实现一个 http 模块,或者是 http filter 模块,都需要实现模块自己的 ngx_http_module_t 结构体。 typedef struct { ngx_int_t (*preconfiguration)(ngx_conf_t *cf); ngx_int_t (*postconfiguration)(ngx_conf_t *cf); void *(*create_main_conf)(ngx_conf_t *cf); char *(*init_main_conf)(ngx_conf_t *cf, void *conf); void *(*create_srv_conf)(ngx_conf_t
table {:toc} *** ngx_http_init_connection() 负责建立 http 链接的是 ngx_http_init_connection(), 我们先来看一下谁会调用这个函数。 ngx_http_optimize_servers() 是一个负责合并配置项的函数
table {:toc} *** 从 main() 函数开始之后,很快就调用到 ngx_init_cycle(),这是 nginx 源码中一个非常重要的函数,它负责调用所有模块的init_modu
table {:toc} *** 编写模块 想要学习如何开发一个 nginx 模块,最快速简单的方法莫过于写一个 Hello World 模块,没错,还真有这么一个 nginx-hello-world-mo