首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ngxin源码分析(七)——请求处理

2012-10-16 
ngxin源码分析(7)——请求处理在建立连接过程中,对于nginx监听到的每个客户端连接,都会将它的读事件的handle

ngxin源码分析(7)——请求处理

        在建立连接过程中,对于nginx监听到的每个客户端连接,都会将它的读事件的handler设置为ngx_http_init_request函数,这个函数就是请求处理的入口。在处理请求时,主要就是要解析http请求,比如:uri,请求行等,然后再根据请求生成响应。下面看一下nginx处理的具体过程。

ngxin源码分析(七)——请求处理

1. ngx_http_init_request

        在ngx_http_init_connection函数中,将连接的读事件的handler设置为这个函数,在客户端发送请求时会被调用。

    /* 遍历phase上注册的所有handler,这里是以r->phase_handler为索引组成的链表 */    while (ph[r->phase_handler].checker) {        rc = ph[r->phase_handler].checker(r, &ph[r->phase_handler]);        if (rc == NGX_OK) {            return;        }    }

        遍历phase上注册的所有handler,这里是以r->phase_handler为索引组成的链表。在调用每个handler的checker时会更新request的phase_handler,从而实现一个handler的链表。

        在跑完所有的phase handler之后,这个请求就被处理完毕。实际的响应内容的输出,是在content phase的handler中调用filter输出实现的。下一篇文章会介绍nginx的phase handler的处理,后面还会介绍filter实现。




热点排行