nginx学习笔记三(nginx启动框架的处理流程)
来源:互联网 发布:ubuntu libxml2devel 编辑:程序博客网 时间:2024/05/23 14:56
《深入理解nginx》中是用流程图+文字的形式讲解了nginx的启动框架处理流程(Page 275),我是结合源码对应着教材过了一篇nginx的启动流程,记录如下:
一.源码位置
main函数:nginx\src\core\nginx.c
ngx_init_cycle函数:nginx\src\core\Ngx_cycle.c
二.启动处理流程
1.解析命令行,处理参数
if (ngx_get_options(argc, argv) != NGX_OK) { return 1; } if (ngx_show_version) { ngx_show_version_info(); if (!ngx_test_config) { return 0; } } /* TODO */ ngx_max_sockets = -1; ngx_time_init(); .... if (ngx_process_options(&init_cycle) != NGX_OK) { return 1; } if (ngx_os_init(log) != NGX_OK) { return 1; } /* * ngx_crc32_table_init() requires ngx_cacheline_size set in ngx_os_init() */ if (ngx_crc32_table_init() != NGX_OK) { return 1; } if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) { return 1; } if (ngx_preinit_modules() != NGX_OK) { return 1; }以上程序对应于《深入理解nginx》page 276图中的1,2两个步骤。
2.调用ngx_init_cycle方法初始化ngx_cycle_t结构体
cycle = ngx_init_cycle(&init_cycle); if (cycle == NULL) { if (ngx_test_config) { ngx_log_stderr(0, "configuration file %s test failed", init_cycle.conf_file.data); } return 1; }
ngx_init_cycle函数完成了配置项解析等很多的事情,具体参见《深入理解nginx》
3.根据配置情况,以不同的方式运行nginx
if (ngx_process == NGX_PROCESS_SINGLE) { ngx_single_process_cycle(cycle); } else { ngx_master_process_cycle(cycle); }
注:阅读源码的过程中可以参考 https://github.com/y123456yz/reading-code-of-nginx-1.9.2 这个有注释的nginx工程来学习
0 0
- nginx学习笔记三(nginx启动框架的处理流程)
- nginx学习笔记六(Nginx事件框架处理流程)
- Nginx学习之十一-Nginx启动框架处理流程
- Nginx学习之十一-Nginx启动框架处理流程
- Nginx学习之十一-Nginx启动框架处理流程
- Nginx学习之十一-Nginx启动框架处理流程
- Nginx启动框架处理流程
- Nginx学习笔记(十三):Nginx启动流程
- nginx学习笔记七(nginx HTTP框架的执行流程)
- Nginx学习笔记(十八):事件处理框架
- Nginx学习笔记(三)
- Nginx学习(12)—Nginx启动流程
- nginx学习十一 nginx启动流程
- Nginx学习笔记(三):封装的数据结构
- 【Nginx】事件驱动框架处理流程
- nginx学习笔记四(nginx启动时候的master和worker进程)
- nginx 学习笔记(三)基本数据结构
- nginx的启动流程和接客流程
- Python编程入门
- (总结)Nginx配置文件nginx.conf中文详解
- 设计模式读书笔记-----桥接模式
- IOS中判断字符串是否为空的方法
- CDISC SDTM EC/EX domain 学习笔记 - 1
- nginx学习笔记三(nginx启动框架的处理流程)
- FTP上传
- 如何进行Web服务的性能测试?
- Linux权限位)(S位)
- 设计模式读书笔记-----组合模式
- ISO中根据URL下载图片,请求图片
- fleStpecxEyarrAfotcudorP.238
- sqlserver拆分字符串函数 及应用
- Java Observer 观察者模式 程序 总结