10.5 location的快速检索
从10.2.3节中可以了解到,每一个server块可以对应着多个location块,而一个location块
还可以继续嵌套多个location块。每一批location块是通过双向链表与它的父配置块(要么属
于server块,要么属于location块)关联起来的。由双向链表的查询效率可以知道,当一个请
求根据10.4节中描述过的散列表快速查询到server块时,必须遍历其下的所有location组成的
双向链表才能找到与其URI匹配的location配置块,这也是用户无法接受的。下面看看HTTP
框架又是怎样通过静态的二叉查找树来保存location的。
// cmcf就是该
http块下全局的
ngx_http_core_main_conf_t结构体
cmcf = ctx->main_conf[ngx_http_core_module.ctx_index]; /*cscfp指向保存所有
ngx_http_core_srv_conf_t结构体指针的
servers动态数组的第
1个元素
*/
cscfp = cmcf->servers.elts;
// 遍历
http块下的所有
server块