nginx_cycle_init
2016-08-19 18:47:19 11 举报
AI智能生成
nginx_cycle_init
作者其他创作
大纲/内容
ngx_init_cycle
创建内存池存放新创建的cycle
默认内存池大小NGX_CYCLE_POOL_SIZE=16K
初始化运行路径
配置文件路径
运行目录
conf_param-不知道干啥用的
初始化paths|array
数据类型ngx_path_t
初始化时为10
在重载配置文件中,为old_cycle配置
初始化config_dump|array
数据类型ngx_conf_dump_t
初始化为1
用于读取配置文件
初始化open_files|list
数据类型ngx_open_file_t
初始化时为20
初始化shared_memory|list
数据类型ngx_shm_zone_t
初始化listening|array
数据类型ngx_listening_t
初始化conf_ctx
所有的配置信息,全部存储在该指针下
将ngx_modules复制到cycle->modules
创建core_module配置信息
将各个值设置为unset
ngx_conf_parse
解析nginx.conf及相关配置文件
根据模块将对应配置文件放到cycle->conf_ctx
初始化core_module配置信息
仅初始化unset项为默认值
根据paths中元素个数创建目录
并设置用户ID和权限
打开open_files中所有的文件
共享内存处理
没看明白,等初始化配置完成后再继续研究
创建监听
对old_cycle中与cycle相同的监听项
deffer取相同配置
并对socket进行赋值
add_reuseport
对于cycle中新监听项,根据编译参数配置deffer
创建所有监听
NGX_HAVE_REUSEPORT
存在该参数时,且add_reuseport == 1
对socket进行reuse_port
判断socket是否为old_cycle继承
为继承则继续上一步
否则创建scoket
创建socket
reuse_addr
reuse_port
nonbolcking
bind
listen
执行所有模块的init_module
对old_cycle进行回收
清理old_cycle->shared_memory
清理old_cycle->listening
根据remain、fd判断是否需要清理
清理old_cycle->open_file
0 条评论
下一页