ngx_http_conf_port_t
定义在 src\http\ngx_http_core_module.h
typedef struct {
ngx_int_t family;
in_port_t port;
ngx_array_t addrs; /* array of ngx_http_conf_addr_t */
} ngx_http_conf_port_t;
该结构体用于在 Nginx 配置阶段存储 监听端口的配置信息 ,是
listen
指令解析后的核心数据结构。它将同一端口号(如80
)的多个监听地址(如127.0.0.1:80
和192.168.1.1:80
)集中管理,为后续的套接字绑定和请求路由提供支持
ngx_int_t family
标识协议族(Protocol Family),决定地址类型:
AF_INET
:IPv4 地址AF_INET6
:IPv6 地址即使端口号相同,IPv4 和 IPv6 的监听配置会被视为独立的端口
in_port_t port
- 类型 :
in_port_t
(等价于uint16_t
)。- 作用 :
存储监听的端口号(主机字节序),例如80
、443
。- 意义 :
作为端口的唯一标识符,用于快速判断新配置的端口是否已存在
ngx_array_t addrs
- 类型 :
ngx_array_t
(Nginx 动态数组)。- 元素类型 :
ngx_http_conf_addr_t
(存储具体地址的配置)。- 作用 :
管理该端口下的所有监听地址(如0.0.0.0:80
、127.0.0.1:80
)。- 意义 :
- 集中管理地址 :同一端口的多个地址配置被统一存储,避免重复绑定。
- 支持复杂配置 :每个地址可能包含不同的参数(如
ssl
、bind
、backlog
)。