开发工具

软件开发以及项目开发和网站开发工具,包括版本控制软件,测试工具,修复漏洞工具等等

4.3. Handler的装载

Handler的装载通过往模块启用了的指令的回调函数中添加代码来完成。比如,我的circle gif 中ngx_command_t是这样的:

{ ngx_string("circle_gif"),
NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
ngx_http_circle_gif,
0,
0,

4.2.4. 状态保持

好了,还记得我说过abort_request, reinit_request和finalize_request 可以用来重置内部状态吗?这是因为许多upstream模块都有其内部状态。模块需要定义一个 自定义上下文结构,来标记目前为止从upstream读到了什么。这跟之前说的“模块上下文”不是一个概念。

4.2.3. process_header 回调函数

现在轮到process_header了,就像create_request把链表指针挂到请求结构体上去一样,process_header把响应指针移到客户端可以接收到的部分。同时它还会从upstream 读入头信息,并且相应的设置发往客户端的响应头。

4.2.2. create_request 回调函数

简单起见,假设我有一个upstream server,它读入一个字符打印出两个字符。那么函数应该如何来写呢? create_request需要申请一个buffer来存放“一个字符”的请求,为buffer申请一个链表,并且把链表挂到upstream结构体上。看起来就像这样:

static ngx_int_t

4.2.1. Upstream 回调函数概要

与其他模块的回调处理函数不一样,upstream模块的处理函数几乎不做“实事”。它压根不调用ngx_http_output_filter。它仅仅是告诉回调函数什么时候可以向upstream server写数据了,以及什么时候能从upstream server读数据了。

页面

Subscribe to RSS - 开发工具