概述
Location命令所在模块为ngx_http_core_module
{ ngx_string("location"),
NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE12,
ngx_http_core_location,
NGX_HTTP_SRV_CONF_OFFSET,
0,
NULL },
回调函数首先创建ngx_http_conf_ctx_t上下文,然后
ctx->main_conf = srv->ctx->main_conf
ctx->srv_conf = srv->crx->srv_conf;
ctx->loc_conf = ngx_pcalloc(cf->pool, sizeof(void*)* ngx_http_max_module)
后面调用每一个NGX_HTTP_MODULE的create_loc_conf方法来把创建出来的结构根据模块的ctx_index保存到相应ctx->loc_conf下面
clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
clcf->loc_conf = ctx->loc_conf;
上面获取ngx_http_core_module的loc的结构,同时把当前location的ctx保存在clcf->loc_conf下面的代码就是构造当前上下文。
pclcf = pctx->loc_conf[ngx_http_core_module.ctx_index];
if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
return NGX_CONF_ERROR;
}
把当先上下文保存在父loc_ctx的locaitons下面
然后又间接递归调用ngx_conf_parse进行解析
Root就不写了
下面就开始写index
Index是属于ngx_http_index_module的
static ngx_command_t ngx_http_index_commands[] = {
{ ngx_string("index"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
ngx_http_index_set_index,
NGX_HTTP_LOC_CONF_OFFSET,
0,
NULL },
ngx_null_command
};
保存在index模块下面了loc上下文中
最后
以上就是顺心猫咪为你收集整理的[nginx源码分析]配置解析(location作用域)的全部内容,希望文章能够帮你解决[nginx源码分析]配置解析(location作用域)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复