Nginx源码分析与导读.ppt

上传人:文库蛋蛋多 文档编号:2389182 上传时间:2023-02-17 格式:PPT 页数:51 大小:1.62MB
返回 下载 相关 举报
Nginx源码分析与导读.ppt_第1页
第1页 / 共51页
Nginx源码分析与导读.ppt_第2页
第2页 / 共51页
Nginx源码分析与导读.ppt_第3页
第3页 / 共51页
Nginx源码分析与导读.ppt_第4页
第4页 / 共51页
Nginx源码分析与导读.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《Nginx源码分析与导读.ppt》由会员分享,可在线阅读,更多相关《Nginx源码分析与导读.ppt(51页珍藏版)》请在三一办公上搜索。

1、Nginx源代码分析与导读,核心系统研发-叔度2010-03-26,目录,源码结构重要概念与基础设施事件驱动架构HTTP处理流程邮件代理流程,Nginx源码结构,代码量大约11万行C代码源代码目录结构core(主干和基础设置)event(事件驱动模型和不同的IO复用模块)http(HTTP服务器和模块)mail(邮件代理服务器和模块)os(操作系统相关的实现)misc(杂项),Nginx架构特点,非阻塞事件驱动单线程IO复用一个主进程和少量工作进程高度模块化,目录,源码结构重要概念与基础设施事件驱动架构HTTP处理流程邮件代理流程,内存池,作用简化内存管理避免内存碎片避免内存泄露分类生命周期全

2、局连接请求大小,内存池布局图示一,内存池布局图示二,缓冲区管理,缓冲区对象指针内存文件重要的标志位last_buflast_in_chainflushin_filememory,缓冲区管理(2),缓冲链缓冲区的一个单链表高级输出链in/free/busyoutput filtercontext,字符串操作,基本类型 ngx_str_tNginx自己的字符串API内存操作相关字符串格式化字符串查找格式转换Base64/URL/UTF-8字符串和数字之间的转换,数据结构,基本的ADT数组链表队列hash表红黑树Radix树特点先添加,再设置按块分配内存,日志操作,错误日志等级调试访问日志日志格式多

3、日志location相关轮转,配置文件,指令名称类型设置函数offset解析过程值的初始化与合并,配置文件(2),块 events/http/server/upstream/location变量$内置的自定义的,目录,源码结构重要概念与基础设施事件驱动架构HTTP处理流程邮件代理流程,主进程和工作进程,主进程(master)监视工作进程的状态当工作进程死掉后重启一个新的处理信号和通知工作进程工作进程(worker)处理客户端请求从主进程处获得指令做相应的事情,主进程和工作进程(2),处理流程示意图,主进程的处理流程,工作进程的处理流程,进程间通信方式,信号频道socketpair命令共享内存统

4、计原子操作与自旋锁互斥量,事件类型,基本数据结构ngx_event_t读、写超时回调函数处理方式立即邮递,时间缓存,避免多余的gettimeofday(2)缓存内容时间值格式化后的时间字符串时间精度与更新频率轮询后刷新定期更新,事件和计时器处理流程,计时器的实现,动作添加删除获得最小值用红黑树实现复杂度O(log n),工作进程之间的协调,多核利用CPU亲缘性惊群问题缘由解决方案锁延迟,工作进程之间的协调(2),Accept互斥量,IO复用模型,系统相关的IO接口水平触发(NGX_USE_LEVEL_EVENT)selectpollevent port边缘触发(NGX_USE_CLEAR_EV

5、ENT)kqueueepoll,高级IO的使用,系统特性sendfilewritevO_DIRECTmmapAIOTCP/IP选项TCP_CORKTCP_NODELAYTCP_DEFER_ACCEPT,重新加载配置的流程,热代码更新,目录,源码结构重要概念与基础设施事件驱动架构HTTP处理流程邮件代理流程,重要的数据结构,连接(ngx_connection_t)HTTP连接(ngx_http_connection_t)HTTP请求(ngx_http_request_t)uriheaders,Virtual Server,重要信息ngx_http_core_srv_conf_t定位流程,位置(l

6、ocation),location树纯文本正则表达式location专属配置命名的location,HTTP上下文,作用域分类mainserverlocation获取方式ngx_http_get_module_main_confngx_http_get_module_srv_confngx_http_get_module_loc_conf设置方式ngx_http_get_module_ctxngx_http_set_ctx,HTTP处理过程,接收数据分析请求找到对应的virtual server找到对应的location执行phase处理器产生response内容过滤header过滤body将

7、输出发送给客户端,请求分析过程,阶段请求行头部技巧状态机ngx_strX_cmp函数,Phase和处理器,Phase种类POST_READSERVER_REWRITEFIND_CONFIGREWRITEPOST_REWRITEPREACCESSACCESSPOST_ACCESSTRY_FILESCONTENTLOG处理器(动作表)checkerhandlernext,Phase和处理器,过滤器链,单链表只过滤输出header过滤器body过滤器输出ngx_http_send_headerngx_http_output_filterngx_http_header_filterngx_http_c

8、opy_filterngx_http_write_filter,过滤器链举例,HTTP处理流程举例,静态文件curl-i http:/localhost/,Keep-alive的处理,重用内存连接的内存收缩终结超时请求次数,子请求(subrequest),需求与原理例子addion filterSSI filter,内部重定向,返回一个与请求不一样的URL举例try_filesindex/random_indexpost_actionsend_error_pageupstream_process_headers,Upstream机制,钩子防止进程阻塞在某处(同步-异步)模块FastCGIProxyMemcached,目录,源码结构重要概念与基础设施事件驱动架构HTTP处理流程邮件代理流程,邮件反向代理,POP3/SMTP/IMAP图示,邮件反向代理(2),会话命令处理包交换可以做的事情负载均衡验证重写黑白名单,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号