栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx event 模块解析

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx event 模块解析

添加event模块和其他模块一样,都是一个流程

Event模块配置的初始化
1. ngx_events_module 模块配置初始化
ngx_init_cycle方法中的模块初始化。ngx_events_module类型为NGX_CORE_MODULE,所以在ngx_init_cycle中就会进行核心模块的初始化。

但是ngx_events_module中的create_conf方法为NULL,所以不会调用创建配置的方法。

2. ngx_conf_parse 解析顶层“event”的配置
ngx_init_cycle方法中会调用ngx_conf_parse方法,并且解析的/usr/local/nginx/conf/nginx.conf配置文件。此次调用只解析最顶层的配置信息“events”,而不会解析{}块中的内容

3. ngx_events_block 解析events块block中的内容
ngx_events_block方法为ngx_events_commands命令集的回调函数。在最顶层解析nginx.conf文件的时候,会进行核心模块的命令集遍历。(参考: Nginx源码分析 - 主流程篇 - 解析配置文件    中的ngx_conf_handler)   会遍历模块命令集的cmd->set方法。

ngx_events_block中主要创建ngx_event_core_module事件的核心模块以及配置信息。

4. ngx_event_core_create_conf和ngx_event_core_init_conf
  • ngx_event_core_create_conf:主要是创建event事件核心模块
  • ngx_event_core_init_conf:初始化event事件核心模块

nginx_event.c文件中的ngx_process_events_and_timers进程事件分发器

ngx_event.c :这个文件主要放置Nginx事件event模块的核心代码。包含:进程事件分发器(ngx_process_events_and_timers)、事件模块的模块和配置、模块初始化/配置初始化等事件模块初始化的核心函数。
ngx_event_timer.c:定时器事件管理。主要放置定时器的代码。
ngx_event_posted.c:主要用于 拿到accept锁的进程 处理accept和read事件的回调函数。上一章惊群处理中,有重点提到ngx_event_process_posted这个方法。
ngx_event_pipe.c:主要用于处理管道。
ngx_event_openssl.c:主要用于处理SSL通道。HTTPS协议。
ngx_event_connect.c:主要用于处理TCP的连接通道。
ngx_event_accept.c:核心是ngx_event_accept和ngx_event_recvmsg,主要是处理accept事件的回调函数handler。而后续的read事件被ngx_event_accept中回调ngx_listen_t结构中的ls->handler回调函数回调,并且将rev->handler修改成ngx_http_wait_request_handler方法。
modules/xxxx.c:主要封装了各种平台的事件模型。我们这边主要看ngx_epoll_module.c模块。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号