在 src\http\modules\ngx_http_proxy_module.c
static void *
ngx_http_proxy_create_main_conf(ngx_conf_t *cf)
{
ngx_http_proxy_main_conf_t *conf;
conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_proxy_main_conf_t));
if (conf == NULL) {
return NULL;
}
#if (NGX_HTTP_CACHE)
if (ngx_array_init(&conf->caches, cf->pool, 4,
sizeof(ngx_http_file_cache_t *))
!= NGX_OK)
{
return NULL;
}
#endif
return conf;
}
该函数 `ngx_http_proxy_create_main_conf` 的作用是为 Nginx 的 HTTP 代理模块创建并初始化主配置结构体 (`ngx_http_proxy_main_conf_t`)
conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_proxy_main_conf_t));
if (conf == NULL) {
return NULL;
}
为主配置结构体 ngx_http_proxy_main_conf_t 分配内存
地址 conf 也是函数的返回值
#if (NGX_HTTP_CACHE)
if (ngx_array_init(&conf->caches, cf->pool, 4,
sizeof(ngx_http_file_cache_t *))
!= NGX_OK)
{
return NULL;
}
#endif
NGX_HTTP_CACHE=1
表示是否启用了 HTTP 缓存功能
初始化动态数组
caches
数组用于存储多个ngx_http_file_cache_t
类型的缓存配置指针。例如:
用户可能通过
proxy_cache_path
指令定义多个缓存路径(如不同目录或不同配置的缓存)。每个缓存实例的配置会被存储为
ngx_http_file_cache_t
结构体,其指针存入caches
数组中
return conf;
返回 结构体地址