网站首页 > 精选教程 正文
我们之前已经介绍了Nginx的进程模型和它里面封装的数据结构。
Nginx的模块非常多,我们之前在 《Nginx有哪些适用场景》一文中介绍过,由于Nginx的高性能,主要使用在web服务器, 这种场景下http模块较于其他模块就显得尤为重要。
因此我们学习http模块,一方面可以更有利于我们Nginx的工作原理,另一方面也可以让我们从中学习到优秀的架构设计。个人感觉向优秀的开源软件学习,是最好的学习方式,会打破自己在书本上学习到的知识边界。
对于Nginx模块不了解的朋友可以看前面的文章 Nginx之模块化设计。
HTTP模块初始化
Nginx 启动时主要有两部分逻辑:
1. 生命周期的初始化 就是 ngx_init_cycle方法,
调用在 Nginx.c的main函数里。
cycle = ngx_init_cycle(&init_cycle);
具体实现 在ngx_cycle.c里,这个方法有900来行 就不列了,主要作用就是配置信息的解析。
ngx_cycle_t * ngx_init_cycle(ngx_cycle_t *old_cycle);
http模块这里可以看到ngx_http_add_listening 会将http处理的回调函数设置成ngx_http_init_connection方法。
static ngx_listening_t *
ngx_http_add_listening(ngx_conf_t *cf, ngx_http_conf_addr_t *addr)
{
// ……
ls = ngx_create_listening(cf, addr->opt.sockaddr, addr->opt.socklen);
ls->addr_ntop = 1;
ls->handler = ngx_http_init_connection;
// ……
}
2. 进入master进程的生命周期,其中最主要的就是启动worker进程,毕竟你一个监工(master),得要有人(worker)给你干活啊。是吧?
在worker进程初始化过程中 ngx_event_process_init方法会给每一个监听socket分配一个链接,并将这个连接的可读事件设置为ngx_event_accept。等有客户端请求来的时候,ngx_event_accept会调用accept函数接收请求。然后调用 上一步里的handler方法来处理,也就是ngx_http_init_connection。
那么Nginx到底是如何解析Http请求的呢?我们明天继续。
猜你喜欢
- 2024-10-04 【Nginx基础】rewrite模块典型用法
- 2024-10-04 测试nginx访问控制模块http_auth_basic_module实现密码访问
- 2024-10-04 linux运维之nginx平滑添加模块 linux nginx -t
- 2024-10-04 http请求中小文件合并怎么做?Nginx模块concat有妙招
- 2024-10-04 Nginx架构与Handler模块最详分析(3)
- 2024-10-04 Nginx非常有用的模块TOP 5 nginx plus独有模块
- 2024-10-04 nginx中http模块介绍 sim800c模块介绍
- 2024-10-04 Nginx的geo模块使用 nginx模块开发与详解
- 2024-10-04 13、Nginx模块配置应用——调试输出
- 2024-10-04 nginx统计模块——ngx_http_stub_status_module
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)