ngx_http_core_main_conf_t

定义在 src\http\ngx_http_core_module.h

复制代码
typedef struct {
    ngx_array_t                servers;         /* ngx_http_core_srv_conf_t */

    ngx_http_phase_engine_t    phase_engine;

    ngx_hash_t                 headers_in_hash;

    ngx_hash_t                 variables_hash;

    ngx_array_t                variables;         /* ngx_http_variable_t */
    ngx_array_t                prefix_variables;  /* ngx_http_variable_t */
    ngx_uint_t                 ncaptures;

    ngx_uint_t                 server_names_hash_max_size;
    ngx_uint_t                 server_names_hash_bucket_size;

    ngx_uint_t                 variables_hash_max_size;
    ngx_uint_t                 variables_hash_bucket_size;

    ngx_hash_keys_arrays_t    *variables_keys;

    ngx_array_t               *ports;

    ngx_http_phase_t           phases[NGX_HTTP_LOG_PHASE + 1];
} ngx_http_core_main_conf_t;

**`ngx_http_core_main_conf_t` 结构体是 Nginx HTTP 核心模块的主配置结构体,负责存储全局配置信息和运行时数据。**


**1. `servers`(虚拟主机列表)**

  • **类型**:`ngx_array_t`(元素类型为 `ngx_http_core_srv_conf_t`)

  • **作用**:存储所有 `server{}` 块的配置。

  • **逻辑**:每个 `server{}` 块对应一个虚拟主机配置(`ngx_http_core_srv_conf_t`),通过动态数组管理。

  • **意义**:Nginx 根据请求的 `Host` 头或 IP 地址,从 `servers` 中匹配目标虚拟主机。


**2. `phase_engine`(阶段引擎)**

  • **类型**:`ngx_http_phase_engine_t`

  • **作用**:管理请求处理的阶段引擎。

  • **逻辑**:包含各阶段的处理函数链表(如 `NGX_HTTP_CONTENT_PHASE`),在请求处理时按阶段依次调用。

  • **意义**:实现 Nginx 的多阶段处理流程(如重写、访问控制、内容生成),模块可注册自己的处理函数到特定阶段。


**3. `headers_in_hash`(请求头哈希表)**

  • **类型**:`ngx_hash_t`

  • **作用**:快速查找 HTTP 请求头。

  • **逻辑**:将常用请求头(如 `Host`、`User-Agent`)的名称哈希化,加速请求头解析。

  • **意义**:优化请求头的查找效率,减少字符串比较开销。


**4. `variables_hash`(变量哈希表)**

  • **类型**:`ngx_hash_t`

  • **作用**:存储所有 Nginx 变量(如 `uri\`、\`args`)。

  • **逻辑**:变量名通过哈希表快速定位,值在运行时动态解析。

  • **意义**:支持高效变量访问,用于配置中的条件判断和动态内容生成。


**5. `variables` 和 `prefix_variables`(变量列表)**

  • **类型**:`ngx_array_t`(元素类型为 `ngx_http_variable_t`)

  • **作用**:

  • `variables`:存储所有显式定义的变量(如 `set $var "value"`)。

  • `prefix_variables`:存储前缀变量(如 `arg_\`、\`cookie_`),根据前缀动态生成值。

  • **逻辑**:变量在配置解析时注册到这两个数组中。

  • **意义**:支持变量的动态管理和快速访问。


**6. `ncaptures`(正则捕获组数量)**

  • **类型**:`ngx_uint_t`

  • **作用**:记录正则表达式匹配时的最大捕获组数量。

  • **逻辑**:在解析 `location` 或 `if` 块中的正则表达式时,更新此值。

  • **意义**:确保捕获组索引(如 `$1`、`2`)的合法性,避免越界访问。


**7. `server_names_hash_*`(虚拟主机哈希参数)**

  • **字段**:

  • `server_names_hash_max_size`:哈希表最大容量。

  • `server_names_hash_bucket_size`:哈希表桶大小。

  • **作用**:优化虚拟主机名的查找效率。

  • **逻辑**:根据 `server_name` 配置生成哈希表,参数由 `server_names_hash_*` 指令设置。

  • **意义**:加速基于 `Host` 头的虚拟主机匹配。


**8. `variables_hash_*`(变量哈希参数)**

  • **字段**:

  • `variables_hash_max_size`:变量哈希表最大容量。

  • `variables_hash_bucket_size`:变量哈希表桶大小。

  • **作用**:优化变量查找的哈希表性能。

  • **逻辑**:参数由 `variables_hash_*` 指令配置,影响哈希表的冲突率和内存占用。

  • **意义**:平衡内存使用和变量访问速度。


**9. `variables_keys`(变量键数组)**

  • **类型**:`ngx_hash_keys_arrays_t*`

  • **作用**:辅助构建变量哈希表的键数组。

  • **逻辑**:在配置解析阶段收集所有变量名,生成哈希键列表。

  • **意义**:确保变量哈希表的高效构建和冲突管理。


**10. `ports`(监听端口列表)**

  • **类型**:`ngx_array_t*`

  • **作用**:存储所有监听的端口和地址(如 `listen 80`)。

  • **逻辑**:每个元素为 `ngx_http_conf_port_t`,包含端口、地址和对应的 `server{}` 配置。

  • **意义**:优化请求路由,快速匹配监听套接字。


**11. `phases`(处理阶段数组)**

  • **类型**:`ngx_http_phase_t[NGX_HTTP_LOG_PHASE + 1]`

  • **作用**:存储每个处理阶段的配置。

  • **逻辑**:数组索引为阶段类型(如 `NGX_HTTP_CONTENT_PHASE`),每个元素包含该阶段的处理函数链。

  • **意义**:在配置解析时收集各模块的处理函数,最终由 `phase_engine` 整合为运行时引擎。

相关推荐
fydw_71532 分钟前
生产环境中安装和配置 Nginx 以部署 Flask 应用的详细指南
运维·nginx·flask
xzh32 分钟前
问题:Nginx client_body_temp_path 文件会删除吗,删除时机?
nginx·架构
dessler2 小时前
代理服务器-LVS的3种模式与调度算法
运维·服务器·网络·算法·nginx·tomcat·lvs
2501_911121236 小时前
Nginx+Tomcat 负载均衡群集
nginx·tomcat·负载均衡
小鱼小鱼.oO16 小时前
阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
服务器·nginx·阿里云
广东数字化转型19 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
�FENG1 天前
LVS、NGINX、HAPROXY的调度算法
nginx·lvs·haproxy·调度算法
哈哈哈哈哈哈哈哈哈...........1 天前
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
tcp/ip·nginx·lua
Adorable老犀牛1 天前
负载均衡将https请求转发后端http服务报错:The plain HTTP request was sent to HTTPS port
nginx·http·https·负载均衡
�FENG2 天前
Nginx+Tomcat负载均衡与动静分离架构
nginx·tomcat·负载均衡·动静分离