我是靠谱客的博主 顺心猫咪,最近开发中收集的这篇文章主要介绍[nginx源码分析]配置解析(location作用域),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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作用域)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部