Nginx-HTTP框架的初始化

本文详细介绍了Nginx的HTTP框架结构,包括解析http{}、server块和location配置,以及HTTP请求的11个处理阶段。讲解了如何向特定阶段添加处理器,并强调content阶段的处理方法。还提到了监听端口管理和配置结构体的作用。
摘要由CSDN通过智能技术生成

原创:https://blog.csdn.net/ndzjx/article/details/89222809

 

HTTP框架大致由1个核心模块(ngx_http_module)、两个HTTP模块(ngx_http_core_module、ngx_http_upstream_module)组成,它将负责调度其他HTTP模块来一起处理用户请求。首要任务是通过ngx_http_module_t接口中的方法来管理所有HTTP模块的配置项。

Server虚拟主机会以散列表的数据结构组织起来,高效查询。

Location表达式会以一个静态的二叉查找树组织起来。不使用红黑树,是因为location是从nginx.conf中读取到的,是静态不变的,不存在运行过程中添加删除的场景,而且红黑树的查询效率也没有重新构造的静态的完全平衡二叉树高。(ngx_http_init_locations/nginx_http_init_static_location_trees)

typedef struct {
    ngx_int_t   (*preconfiguration)(ngx_conf_t *cf);
    ngx_int_t   (*postconfiguration)(ngx_conf_t *cf);

    void       *(*create_main_conf)(ngx_conf_t *cf);
    char       *(*init_main_conf)(ngx_conf_t *cf, void *conf);

    void       *(*create_srv_conf)(ngx_conf_t *cf);
    char       *(*merge_srv_conf)(ngx_conf_t *cf, void *prev, void *conf);

    void       *(*create_loc_conf)(ngx_conf_t *cf);
    char       *(*merge_loc_conf)(ngx_conf_t *cf, void *prev, void *conf);
} ngx_http_module_t;

1:处理http{}块内的main级别配置项时,对每个HTTP模块,都会调用create_main_conf、create_srv_conf、create_loc_conf建立3个结构体,这是为了把同时出现在http{},server{},location{}内的相同配置项进行合并而做的准备。

2:处理server{}内的srv级别配置项时,需要调用每个HTTP模块的create_srv_conf、create_loc_conf

3:处理location{}内的loc级别配置项时&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值