nginx基础架构

一, 基础架构

1, ngx_cycle_t支持的方法

方法名 参数含义 执行意义
ngx_cycle_t *ngx_init_cycle_(ngx_cycle_t *old_cycle) old_cycle表示临时的ngxcycle_t指针,一般仅用来传递ngx_cycle_t结构体中的配置文件路径等参数 返回初始化成功的完整的ngx_cycle_t结构体, 该函数将会负责初始化ngx_cycle_t中的数据结构, 解析配置文件加载所有模块, 打开监听端口,初始化进程间通信方式等工作. 如果失败, 则返回NULL空指针
ngx_int_t ngx_process_options(ngx_cycle_t *cycle) cycle通常是刚刚分配的ngx_cycle_t结构体指针, 仅用于传递配置文件路径信息 用运行nginx时可能携带的目录参数来初始化cycle, 包含初始化运行目录, 配置目录, 并生成完整的nginx.conf配置文件路径
ngx_int_t ngx_add_inherited_sockets(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 在执行不重启服务升起nginx的操作时, 老的nginx进程会通过环境变量"NGINX"来传递需要打开的监听端口, 新的nginx进程会通过ngx_add_inherited_sockets方法来使用已经打开的TCP监听端口
ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 监听, 绑定cycle中listening动态数组指定的相应端口
void ngx_configure_listening_sockets(ngx_cycle_t * cycle) cycle是当前进程的ngx_cycle_t结构体指针 根据nginx.conf中的配置项设置已经监听的句柄
void ngx_close_listening_sockets(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 关闭cycle中listening动态数组已经监听的句柄
void ngx_master_process_cycle(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 进入master进程的工作循环
void ngx_single_process_cycle(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 进入单进程模式(非master, worker进程工作模式)的工作循环
void ngx_start_worker_processes(ngx_cycle_t * cycle, ngx_int_t n, ngx_int_t type) cycle是当前进程的ngx_cycle_t结构体指针, n是启动子进程的个数, type是启动方式, 它的取值范围有以下5中: 1. NGX_PROCESS_PRESPAWN; 2. NGX_PROCESS_NORESPAWN; 3. NGX_PROCESS_JUST_SPAWN; 4. NGX_PROCESS_JUST_RESPAWN 5. NGX_PROCESS_DETACHED; type 的值将影响ngx_process_t结构体的respawn, detached, just_spawn标志位的值 启动n个worker子进程, 并始终好每一个子进程与master父进程之间使用socketpair系统调用建立起来的socket句柄通信机制
void ngx_start_cache_manager_processes(ngx_cycle_t *cycle, ngx_uint_t respawn) cycle是当前进程的ngx_cycle_t结构体指针, respawn是启动子进程的方式, 它与ngx_start_worker_processes方法中的type参数意义完全相同 根据是否使用文件缓存模块, 也就是cycle中存储路径的动态数组中是否有路径的manage标志打开,来决定是否启动cache manager 子进程, 同样根据loader标志决定是否启动cache loader子进程
void ngx_pass_open_channel(ngx_cycle_t * cycle, ngx_channel_t *ch) cycle是当前进程的ngx_cycle_t结构体指针, ch是将要向子进程发送的信息 向所有已经打开的channel(通过socketpair生成的句柄进行通信)发送ch信息
void ngx_signal_worker_processes(ngx_cycle_t * cycle, int signo) cycle是当前进程的ngx_cycle_t结构体指针, signo是信号 处理worker进程接收到信号
void ngx_uint_t ngx_reap_children(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针, signo是信号 检查master进程的所有子进程, 根据每一个子进程的状态(ngx_process_t 结构体中的标志位)判断是否要启动子进程, 更改pid文件等
void ngx_master_process_exit(ngx_cycle_t * cycle) cycle是当前进程的ngx_cycle_t结构体指针 退出master进程工作的循环
void ngx_worker_process_init(ngx_cycle_t *cycle, void *data) cycle是当前进程的ngx_cycle_t结构体指针, 这里还未开始使用data参数, 所以data一般为NULL 进入worker进程工作的循环
void ngx_worker_process_init(ngx_cycle_t *cycle, ngx_uint_t priority) cycle是当前进程的ngx_cycle_t结构体指针, priority是worker进程的系统优先级 进入worker进程工作循环之前的初始化工作
void ngx_worker_process_exit(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 退出worker进程工作的循环
void ngx_cache_manager_process_cycle(ngx_cycle_t *cycle, void *data) cycle是当前进程的ngx_cycle_t结构体指针, data是传入的ngx_cache_manager_ctx_t结构体指针 执行缓存管理工作的循环方法. 这与文件缓存模块密切相关
void ngx_process_events_and_timers(ngx_cycle_t *cycle) cycle是当前进程的ngx_cycle_t结构体指针 使用事件模块处理截止到现在已经收集到的事件

个人博客地址:https://chensongpoixs.github.io/

你可能感兴趣的:(nginx)