定義在
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
)。?