这篇文章主要介绍“nginx的http模块初始化源码分析”,在日常操作中,相信很多人在nginx的http模块初始化源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nginx的http模块初始化源码分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联为企业提供:成都品牌网站建设、网络营销策划、小程序开发、营销型网站建设和网站运营托管,一站式网络营销整体服务。实现不断获取潜在客户之核心目标,建立了企业专属的“营销型网站建设”,就用不着再为了获取潜在客户而苦恼,相反,客户会主动找您,生意就找上门来了!
继续http模块的分析,这次分析的是init_module钩子函数的执行。http模块各子模块的init_module钩子主要做的事情是两个,一个就是注册phases回调,一个就是挂载模块到filter链表。首先看一下注册phases回调的模块
access模块
static ngx_int_t ngx_http_access_init(ngx_cycle_t *cycle)
{
ngx_http_handler_pt *h;
ngx_http_core_main_conf_t *cmcf;
// 取出http_core_module的配置结构体
cmcf = ngx_http_cycle_get_module_main_conf(cycle, ngx_http_core_module);
// 设置在NGX_HTTP_ACCESS_PHASE阶段的回调
h = ngx_push_array(&cmcf->phases[NGX_HTTP_ACCESS_PHASE].handlers);
if (h == NULL) {
return NGX_ERROR;
}
*h = ngx_http_access_handler;
return NGX_OK;
}
charset模块
static ngx_int_t ngx_http_charset_filter_init(ngx_cycle_t *cycle)
{
ngx_http_next_header_filter = ngx_http_top_header_filter;
ngx_http_top_header_filter = ngx_http_charset_header_filter;
ngx_http_next_body_filter = ngx_http_top_body_filter;
ngx_http_top_body_filter = ngx_http_charset_body_filter;
return NGX_OK;
}
ngx_http_top_header_filter变量是定义在ngx_http.c文件的一个全局变量。ngx_http_next_header_filter变量是每个filter模块自己定义的一个模块内可见的局部变量。ngx_http_top_body_filter类似。每个模块先令自己的next变量执行当前top变量指向的节点,然后再令top节点指向本模块的filter函数。从而实现了一条filter链表。当执行到当前模块的filter钩子后,钩子函数最后会执行next对应的下一个钩子。
到此,关于“nginx的http模块初始化源码分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款