定义在
src/http/ngx_http_config.h
typedef struct {
void **main_conf;
void **srv_conf;
void **loc_conf;
} ngx_http_conf_ctx_t;
ngx_http_conf_ctx_t
是 Nginx 中用于管理 HTTP 配置上下文的核心结构体,其设计体现了 Nginx 多级配置(main、server、location)的层级化管理思想
1.
main_conf
(主配置块指针数组)
- 作用 :存储全局(main 级别)的配置数据。
- 意义 :
- 对应 Nginx 配置文件中的
http
块(最外层配置)。- 每个 HTTP 模块(如
ngx_http_core_module
)在解析全局配置时,会将自己的配置结构体指针存入main_conf
数组。- 例如:
worker_connections
、keepalive_timeout
等全局配置存储在此。- 实现细节 :
main_conf
是一个void**
类型的数组,数组长度为所有 HTTP 模块的数量。- 每个元素指向对应模块的全局配置结构体(如
ngx_http_core_main_conf_t
)。2.
srv_conf
(服务配置块指针数组)
- 作用 :存储虚拟主机(server 级别)的配置数据。
- 意义 :
- 对应 Nginx 配置文件中的
server
块。- 每个 HTTP 模块在解析虚拟主机配置时,会将自己的配置结构体指针存入
srv_conf
数组。- 例如:
listen
端口、server_name
等配置存储在此。- 实现细节 :
srv_conf
的数组长度同样等于 HTTP 模块的数量。- 每个元素指向对应模块的虚拟主机配置结构体(如
ngx_http_core_srv_conf_t
)。3.
loc_conf
(位置配置块指针数组)
- 作用 :存储路径(location 级别)的配置数据。
- 意义 :
- 对应 Nginx 配置文件中的
location
块。- 每个 HTTP 模块在解析路径配置时,会将自己的配置结构体指针存入
loc_conf
数组。- 例如:
proxy_pass
、root
等与路径相关的配置存储在此。- 实现细节 :
loc_conf
的数组长度仍为 HTTP 模块的数量。- 每个元素指向对应模块的路径配置结构体(如
ngx_http_core_loc_conf_t
)。