11.9.1 配置上下文*ctx

时间 : 16-03-29 栏目 : nginx专题 作者 : 老薛 评论 : 0 点击 : 796 次

我们在第3章中就已经学习过,Nginx的配置文件是分块配置的,常见的有http块、server块、location块以及upsteam块和mail块等。每一个这样的配置块代表一个作用域。高一级配置块的作用域包含了多个低一级配置块的作用域,也就是有作用域嵌套的现象。这样,配置文件中的许多指令都会同时包含在多个作用域内。比如,http块中的指令都可能同时处于http块、server块和location块等三层作用域内。

在Nginx程序解析配置文件时,每一条指令都应该记录自己所属的作用域范围,而配置文件上下文ctx变量就是用来存放当前指令所属的作用域的。在Nginx配置文件的各种配置块中,http块可以包含子配置块,这在存储结构上比较复杂。我们以http指令为例,来说明指令上下文*ctx的使用。

在/nginx/src/http/ngx_http_conf.h文件中可以找到ngx_http_conf_ctx_t结构体的定义:
 

    typedef struct {  
        void        ** main_conf;  
        void        **srv_conf;  
        void        **loc_conf;  
    } ngx_http_conf_ctx_t;  

该结构体描述了http块的配置上下文。http块中的server块和location块中的配置结构会通过指针以数组的形式保存在**main_conf和**serv_conf中,http块本身的配置参数会保存在**main_conf中,这样http块通过该结构体就存储了自己的配置上下文,然后将其以指针的形式保存在ngx_conf_s结构体的*ctx成员中。

与http指令类似的还有mail指令等。其他不可以包含子配置块的指令在指令上下文的使用上原理一样,但更简单一些。

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/nginx-2/1573.html

11.9.1 配置上下文*ctx:等您坐沙发呢!

发表评论

8 + 9 = ?


博主微信号,很高兴为您提供帮助

随便看看

0