Nginx启动流程概览
Posted 悥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx启动流程概览相关的知识,希望对你有一定的参考价值。
nginx启动流程概览
1、 Init Cycle
2、 Init Process
3、 Start Worker
4、 Event Handle
Init Cycle
- ngx_cycle 是nginx全局配置,类型为ngx_cycle_t,其结构如下(已精简):
struct ngx_cycle_s {
void ****conf_ctx; //全局配置项
ngx_pool_t *pool;
ngx_log_t *log;
ngx_connection_t **files;
ngx_connection_t *free_connections;
ngx_module_t **modules; //module数组
ngx_queue_t reusable_connections_queue; //重复使用的socket存放队列
ngx_uint_t reusable_connections_n;
ngx_array_t listening;
ngx_rbtree_t config_dump_rbtree;
ngx_rbtree_node_t config_dump_sentinel;
ngx_connection_t *connections;
ngx_event_t *read_events;
ngx_event_t *write_events;
... ...
};
- 看到ngx_cycle的conf_ctx的指针的层次可知,这个结构将会很复杂,其大致结构为:
-
- 第一层指针指向几个类型为NGX_CORE_MODULE的配置结构,以http模块为例,指针类型为ngx_http_conf_ctx_t;
-
- 第二层指针指向子类型配置的结构数组,主要体现在HTTP类型模块上,HTTP配置比较复杂,分为Main、Svr、Location三类,所以这一层是含三个元素的数组;
-
- 第三层指针指向各个同类型模块的不同类型配置,对HTTP模块而言,Main级别的配置有多个,SVR级别和Loc级别也有多个;
-
- 最后一层指针便能访问具体的某一模块的特定配置项。
待续
以上是关于Nginx启动流程概览的主要内容,如果未能解决你的问题,请参考以下文章
Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段