Nginx开发从入门到精通 http://tengine.taobao.org/book/index.html 上篇:nginx模块开发篇 背景介绍 nginx历史使用简介nginx特点介绍nginx平台初探(100%) 初探nginx架构(100%)nginx基础概念(100%) connectionrequest基本数据结构(99%) ngx_str_t(100%)ngx_pool_t(100%)ngx_array_t(100%)ngx_hash_t(100%)ngx_hash_wildcard_t(100%)ngx_hash_combined_t(100%)ngx_hash_keys_arrays_t(100%)ngx_chain_t(100%)ngx_buf_t(99%)ngx_list_t(100%)ngx_queue_t(100%)nginx的配置系统(100%) 指令概述指令参数指令上下文nginx的模块化体系结构模块概述 模块的分类nginx的请求处理 请求的处理流程handler模块(100%) handler模块简介模块的基本结构 模块配置结构模块配置指令模块上下文结构模块的定义handler模块的基本结构handler模块的挂载 按处理阶段挂载按需挂载handler的编写步骤示例: hello handler 模块handler模块的编译和使用 config文件的编写编译使用更多handler模块示例分析 http access modulehttp static modulehttp log module过滤模块 (90%) 过滤模块简介 (90%) 执行时间和内容 (90%)执行顺序 (90%)模块编译 (90%)过滤模块的分析 (90%) 相关结构体 (90%)响应头过滤函数 (90%)响应体过滤函数 (90%)upstream模块 upstream模块 (100%) upstream模块接口memcached模块分析本节回顾负载均衡模块 (100%) 配置指令钩子初始化配置初始化请求peer.get和peer.free回调函数本节回顾其他模块 (40%) core模块 (40%) Nginx的启动模块 (40%)event模块 (40%) event的类型和功能 (40%)accept锁 (40%)定时器 (40%)mail模块 mail模块的实现mail模块的功能模块开发高级篇(30%) 变量(80%) 综述创建变量使用变量upstream 使用subrequest访问upstream超越upstream使用lua模块下篇:nginx原理解析篇 高性能服务器设计 c10k问题高性能服务器编写的关键原则事件驱动的核心引擎定时器管理nginx架构详解(50%) nginx的源码目录结构(100%)nginx的configure原理(100%) auto脚本模块编译顺序nginx的事件机制 event框架及非阻塞模型定时器实现信号处理惊群问题nginx的进程机制 master进程worker进程进程间通讯nginx基础设施 内存池 简介:结构:实现:共享内存 slab算法buffer管理 buffer重用机制buffer防拷贝机制chain管理 chain重用机制aio原理锁实现基本数据结构时间缓存文件缓存log机制nginx的启动阶段 (30%) 概述 (100%)共有流程 (100%) 配置解析接口 (100%)配置解析 通用过程 (100%)http的解析server的管理location的管理模块初始化热代码部署 reload过程解析upgrade过程解析nginx的请求处理阶段 (90%) 接收请求流程 (99%) http请求格式简介 (99%)请求头读取 (99%)请求体读取(100%)多阶段处理请求 多阶段执行链POST_READ阶段SERVER_REWRITE阶段FIND_CONFIG阶段REWRITE阶段POST_REWRITE阶段PREACCESS阶段ACCESS阶段POST_ACCESS阶段TRY_FILES阶段CONTENT阶段LOG阶段Nginx filter header filter分析body filter分析subrequest原理解析 (99%)https请求处理解析 nginx支持ssl简介ssl连接建立(ssl握手)nginx的upstream原理解析 无缓冲的处理流程带缓冲的处理流程subrequest访问upstream的处理流程负载均衡算法 round-robin算法基于ip的hash算法upstream缓存机制常用upstream模块分析 proxy模块fastcgi模块nginx的script处理 正则表达式变量复杂变量if的处理附录A 编码风格 (100%) Nginx代码风格图示 (100%)附录B 常用API B.1 字符串操作B.2 读取请求体B.3 操作请求头B.4 取参数B.5 URI处理B.6 buffer操作B.7 变量操作B.8 日志输出B.9 配置解析接口B.10 文件操作B.11 锁操作附录C 模块编译,调试与测试 C.1 编译与安装 环境要求下载Nginx在Windows环境下安装Nginx在Linux环境下安装测试Nginx在Windows环境下查看nginx进程Nginx在Linux环境下查看nginx进程C.2 调试日志 一,开启调试日志:二,日志级别分析:三,日志格式设置:四,调试日志的几个注意点:C.3 使用GDB调试C.4 功能测试C.5 性能/压力测试C.6 常见缺陷分析