为你推荐
前言
第0章 导读
0.1 关于本书
0.2 读者对象
0.3 读者要求
0.4 运行环境
0.5 本书的结构
0.6 如何阅读本书
0.7 本书的源码
第1章 Nginx入门
1.1 关于Nginx
1.1.1 历史
1.1.2 特点
1.1.3 进程模型
1.1.4 版本
1.2 安装Nginx
1.2.1 准备工作
1.2.2 快速安装
1.2.3 运行命令
1.2.4 验证安装
1.2.5 定制安装
1.3 配置Nginx
1.3.1 配置文件格式
1.3.2 进程配置
1.3.3 动态模块配置
1.3.4 运行日志配置
1.3.5 events配置
1.3.6 http配置
1.3.7 server配置
1.3.8 location配置
1.3.9 file配置
1.3.10 upstream配置
1.3.11 变量
1.4 总结
第2章 Nginx开发准备
2.1 开发环境
2.1.1 C++标准
2.1.2 Boost程序库
2.2 目录结构
2.3 源码特点
2.3.1 代码风格
2.3.2 代码优化
2.3.3 面向对象思想
2.4 使用C++
2.4.1 实现原则
2.4.2 代码风格
2.4.3 编译脚本
2.5 C++包装类
2.5.1 类定义
2.5.2 构造和析构
2.5.3 成员函数
2.6 总结
第3章 Nginx基础设施
3.1 头文件
3.1.1 Nginx头文件
3.1.2 C++头文件
3.2 整数类型
3.2.1 标准整数类型
3.2.2 自定义整数类型
3.2.3 无效值
3.2.4 C++封装
3.3 错误处理
3.3.1 错误码定义
3.3.2 C++异常
3.4 内存池
3.4.1 结构定义
3.4.2 操作函数
3.4.3 C++封装
3.4.4 清理机制
3.4.5 C++内存分配器
3.5 字符串
3.5.1 结构定义
3.5.2 操作函数
3.5.3 C++封装
3.6 时间与日期
3.6.1 时间结构定义
3.6.2 时间操作函数
3.6.3 日期结构定义
3.6.4 日期操作函数
3.6.5 C++封装时间
3.6.6 C++封装日期
3.7 运行日志
3.7.1 结构定义
3.7.2 操作函数
3.7.3 C++封装
3.8 总结
第4章 Nginx高级数据结构
4.1 动态数组
4.1.1 结构定义
4.1.2 操作函数
4.1.3 C++动态数组
4.2 单向链表
4.2.1 结构定义
4.2.2 操作函数
4.2.3 C++迭代器
4.2.4 C++单向链表
4.3 双端队列
4.3.1 结构定义
4.3.2 操作函数
4.3.3 C++节点
4.3.4 C++迭代器
4.3.5 C++双端队列
4.4 红黑树
4.4.1 节点结构定义
4.4.2 树结构定义
4.4.3 操作函数
4.4.4 C++红黑树
4.5 缓冲区
4.5.1 结构定义
4.5.2 操作函数
4.5.3 C++缓冲区
4.6 数据块链
4.6.1 结构定义
4.6.2 操作函数
4.6.3 C++节点
4.6.4 C++迭代器
4.6.5 C++数据块链
4.7 键值对
4.7.1 简单键值对
4.7.2 散列表键值对
4.8 总结
第5章 Nginx开发综述
5.1 最简单的模块
5.1.1 模块设计
5.1.2 配置解析
5.1.3 处理函数
5.1.4 模块集成
5.1.5 编译脚本和命令
5.1.6 测试验证
5.2 开发基本流程
5.2.1 设计
5.2.2 开发
5.2.3 编译
5.2.4 测试验证
5.2.5 调优
5.2.6 流程图
5.3 编译脚本
5.3.1 运行机制
5.3.2 使用的变量
5.3.3 模块脚本
5.3.4 两种脚本格式
5.3.5 旧式编译脚本
5.4 总结
第6章 Nginx模块体系
6.1 模块架构
6.1.1 结构定义
6.1.2 模块的签名
6.1.3 模块的种类
6.1.4 模块的函数指针表
6.1.5 模块的类图
6.1.6 模块的组织形式
6.1.7 模块的初始化
6.1.8 模块的动态加载
6.2 配置解析
6.2.1 结构定义
6.2.2 配置解析的基本流程
6.2.3 配置数据的存储模型
6.2.4 访问配置数据
6.2.5 确定配置数据的位置
6.2.6 配置解析函数
6.2.7 配置数据的合并
6.2.8 配置指令的类型
6.3 源码分析
6.3.1 ngx_core_module
6.3.2 ngx_errlog_module
6.4 C++封装
6.4.1 NgxModuleConfig
6.4.2 NgxModule
6.4.3 NgxTake
6.4.4 NGX_MODULE_NULL
6.5 C++开发模块
6.5.1 模块的基本组成
6.5.2 配置信息类
6.5.3 业务逻辑类
6.5.4 模块集成类
6.5.5 实现源文件
6.5.6 增加更多功能
6.6 总结
第7章 Nginx HTTP框架综述
7.1 框架简介
7.1.1 模块分类
7.1.2 处理流程
7.1.3 请求结构体
7.1.4 请求的处理阶段
7.1.5 请求的环境数据
7.2 处理引擎
7.2.1 函数原型
7.2.2 处理函数的存储方式
7.2.3 内容处理函数
7.2.4 引擎的数据结构
7.2.5 引擎的初始化
7.2.6 引擎的运行机制
7.2.7 日志阶段的处理
7.3 过滤引擎
7.3.1 函数原型
7.3.2 过滤函数链表
7.3.3 过滤函数的顺序
7.3.4 过滤链表的运行机制
7.3.5 请求体过滤
7.4 源码分析
7.4.1 ngx_http_static_module
7.4.2 ngx_http_not_modified_filter_module
7.5 C++封装
7.5.1 NgxModuleCtx
7.5.2 NgxHttpCoreModule
7.5.3 NgxFilter
7.6 总结
第8章 Nginx HTTP请求处理
8.1 状态码
8.2 请求结构体
8.3 请求行
8.3.1 请求方法
8.3.2 协议版本号
8.3.3 资源标识符
8.4 请求头
8.5 请求体
8.5.1 结构定义
8.5.2 操作函数
8.6 响应头
8.6.1 结构定义
8.6.2 操作函数
8.7 响应体
8.8 源码分析
8.8.1 ngx_http_static_module
8.8.2 ngx_http_not_modified_filter_module
8.9 C++封装
8.9.1 NgxHeaders
8.9.2 NgxRequestBody
8.9.3 NgxRequest
8.9.4 NgxResponse
8.10 开发handler模块
8.10.1 模块设计
8.10.2 配置信息类
8.10.3 业务逻辑类
8.10.4 模块集成类
8.10.5 实现源文件
8.10.6 编译脚本
8.10.7 测试验证
8.11 开发filter模块
8.11.1 模块设计
8.11.2 配置信息类
8.11.3 环境数据类
8.11.4 业务逻辑类
8.11.5 模块集成类
8.11.6 实现源文件
8.11.7 编译脚本
8.11.8 测试验证
8.12 总结
第9章 Nginx HTTP请求转发
9.1 框架简介
9.1.1 工作原理
9.1.2 请求结构体
9.1.3 上游结构体
9.1.4 上游配置参数
9.2 请求转发机制
9.2.1 回调函数
9.2.2 初始化
9.2.3 设置连接参数
9.2.4 启动连接
9.2.5 处理数据
9.3 负载均衡机制
9.3.1 结构定义
9.3.2 初始化模块入口
9.3.3 初始化地址列表
9.3.4 初始化算法
9.3.5 执行算法
9.4 源码分析
9.4.1 ngx_http_memcached_module
9.4.2 ngx_http_upstream_ip_hash_module
9.5 C++封装
9.5.1 NgxUpstream
9.5.2 NgxUpstreamHelper
9.5.3 NgxHttpUpstreamModule
9.5.4 NgxLoadBalance
9.6 开发upstream模块
9.6.1 模块设计
9.6.2 配置信息类
9.6.3 业务逻辑类
9.6.4 模块集成类
9.6.5 实现源文件
9.6.6 编译脚本
9.6.7 测试验证
9.7 开发load-balance模块
9.7.1 模块设计
9.7.2 配置信息类
9.7.3 业务逻辑类
9.7.4 模块集成类
9.7.5 实现源文件
9.7.6 编译脚本
9.7.7 测试验证
9.8 总结
第10章 Nginx HTTP子请求
10.1 子请求简介
10.1.1 工作原理
10.1.2 请求结构体
10.1.3 回调函数
10.1.4 待处理请求链表
10.1.5 子请求存储结构
10.2 子请求运行机制
10.2.1 创建子请求
10.2.2 处理引擎
10.2.3 数据整理
10.3 C++封装
10.3.1 NgxSubRequestHandler
10.3.2 NgxSubRequest
10.4 数据回传模块
10.4.1 模块设计
10.4.2 环境数据类
10.4.3 业务逻辑类
10.4.4 模块集成类
10.4.5 编译脚本
10.5 在模块里使用子请求
10.5.1 模块设计
10.5.2 配置信息类
10.5.3 业务逻辑类
10.5.4 测试验证
10.6 总结
第11章 Nginx变量
11.1 结构定义
11.1.1 变量值
11.1.2 变量访问对象
11.1.3 变量的存储
11.1.4 请求结构体
11.2 运行机制
11.2.1 注册变量
11.2.2 获取变量
11.2.3 修改变量
11.3 复杂变量
11.3.1 结构定义
11.3.2 运行机制
11.4 C++封装
11.4.1 NgxVariableValue
11.4.2 NgxVariable
11.4.3 NgxVarManager
11.4.4 NgxVariables
11.4.5 NgxComplexValue
11.5 在模块里使用变量
11.5.1 添加变量
11.5.2 读写变量
11.6 在模块里使用复杂变量
11.6.1 配置信息类
11.6.2 业务逻辑类
11.6.3 模块集成类
11.6.4 测试验证
11.7 总结
第12章 Nginx辅助设施
12.1 摘要算法
12.1.1 MD5
12.1.2 SHA-1
12.1.3 MurmurHash
12.1.4 C++封装
12.2 编码和解码
12.2.1 CRC校验
12.2.2 Base64编码解码
12.2.3 URI编码解码
12.2.4 HTML和JSON编码
12.3 正则表达式
12.4 共享内存
12.4.1 结构定义
12.4.2 操作函数
12.4.3 C++共享内存
12.5 总结
第13章 Nginx进程机制
13.1 基本系统调用
13.1.1 errno
13.1.2 getrlimit
13.2 进程系统调用
13.2.1 getpid
13.2.2 fork
13.2.3 waitpid
13.3 信号系统调用
13.3.1 kill
13.3.2 sigaction
13.3.3 sigsuspend
13.4 结构定义
13.4.1 ngx_cycle_t
13.4.2 ngx_core_conf_t
13.4.3 ngx_process_t
13.5 全局变量
13.5.1 命令行相关
13.5.2 操作系统相关
13.5.3 进程功能相关
13.5.4 信号功能相关
13.6 启动过程
13.6.1 基本流程
13.6.2 解析命令行
13.6.3 版本和帮助信息
13.6.4 初始化cycle
13.6.5 测试配置
13.6.6 发送信号
13.6.7 守护进程化
13.6.8 启动工作进程
13.6.9 流程图
13.7 信号处理
13.7.1 信号处理函数
13.7.2 发送信号
13.7.3 处理信号
13.8 单进程模式
13.8.1 single进程
13.8.2 single进程流程图
13.9 多进程模式
13.9.1 产生子进程
13.9.2 master进程
13.9.3 master进程流程图
13.9.4 worker进程
13.9.5 worker进程流程图
13.10 总结
第14章 Nginx事件机制
14.1 基本系统调用
14.1.1 errno
14.1.2 ioctl
14.1.3 setitimer
14.1.4 gettimeofday
14.2 socket系统调用
14.2.1 socket
14.2.2 bind
14.2.3 listen
14.2.4 accept
14.2.5 connect
14.2.6 recv
14.2.7 send
14.2.8 setsockopt
14.2.9 close
14.2.10 函数关系图
14.3 epoll系统调用
14.3.1 epoll_create
14.3.2 epoll_ctl
14.3.3 epoll_wait
14.3.4 LT和ET
14.3.5 函数关系图
14.4 结构定义
14.4.1 ngx_event_t
14.4.2 ngx_connection_t
14.4.3 ngx_listening_t
14.4.4 ngx_cycle_t
14.4.5 ngx_os_io_t
14.4.6 ngx_event_actions_t
14.4.7 ngx_posted_events
14.4.8 结构关系图
14.5 定时器
14.5.1 红黑树
14.5.2 操作函数
14.5.3 超时处理
14.6 模块体系
14.6.1 函数指针表
14.6.2 模块的组织形式
14.6.3 核心配置
14.6.4 epoll模块
14.7 全局变量
14.7.1 更新时间相关
14.7.2 事件机制相关
14.7.3 负载均衡相关
14.7.4 统计相关
14.8 运行机制
14.8.1 模块初始化
14.8.2 进程初始化
14.8.3 基本参数初始化
14.8.4 epoll初始化
14.8.5 连接池初始化
14.8.6 监听端口初始化
14.8.7 初始化流程图
14.8.8 添加事件
14.8.9 删除事件
14.8.10 处理事件
14.8.11 接受连接
14.8.12 负载均衡
14.8.13 避免阻塞
14.9 总结
第15章 Nginx多线程机制
15.1 eventfd系统调用
15.2 pthread系统调用
15.2.1 pthread_create
15.2.2 pthread_exit
15.3 结构定义
15.3.1 ngx_thread_task_t
15.3.2 ngx_thread_pool_queue_t
15.3.3 ngx_thread_pool_t
15.3.4 结构关系图
15.4 事件通知
15.4.1 函数接口
15.4.2 初始化
15.4.3 发送通知
15.4.4 处理通知
15.5 运行机制
15.5.1 完成任务队列
15.5.2 创建线程池
15.5.3 创建任务
15.5.4 投递任务
15.5.5 执行任务
15.5.6 任务完成回调
15.5.7 销毁线程池
15.6 在模块里使用多线程
15.6.1 模块设计
15.6.2 配置信息类
15.6.3 业务逻辑类
15.6.4 测试验证
15.7 总结
第16章 Nginx Stream机制
16.1 模块体系
16.1.1 函数指针表
16.1.2 基础模块
16.1.3 核心模块
16.1.4 结构关系图
16.1.5 存储模型
16.2 监听端口
16.2.1 结构定义
16.2.2 解析配置
16.2.3 启动监听
16.3 处理引擎
16.3.1 阶段定义
16.3.2 函数原型
16.3.3 处理函数的存储方式
16.3.4 引擎数据结构
16.3.5 结构关系图
16.3.6 引擎的初始化
16.4 过滤引擎
16.4.1 函数原型
16.4.2 过滤函数链表
16.5 运行机制
16.5.1 会话结构体
16.5.2 创建会话
16.5.3 执行引擎
16.5.4 通用阶段处理
16.5.5 预读数据
16.5.6 产生响应数据
16.5.7 过滤数据
16.5.8 结束会话
16.6 开发stream模块
16.6.1 C++封装
16.6.2 discard协议
16.6.3 time协议
16.6.4 chargen协议
16.7 总结
第17章 Nginx HTTP机制
17.1 结构定义
17.1.1 ngx_http_state_e
17.1.2 ngx_http_connection_t
17.1.3 ngx_http_request_t
17.2 初始化连接
17.2.1 建立连接
17.2.2 等待数据
17.2.3 读取请求头
17.3 执行引擎
17.3.1 初始化引擎
17.3.2 通用阶段
17.3.3 改写阶段
17.3.4 访问控制阶段
17.3.5 内容产生阶段
17.4 处理请求体
17.4.1 丢弃缓冲区数据
17.4.2 读取并丢弃数据
17.4.3 读事件处理函数
17.4.4 启动丢弃处理
17.5 发送数据
17.5.1 发送初始化
17.5.2 事件处理函数
17.6 结束请求
17.6.1 释放请求资源
17.6.2 检查引用计数结束请求
17.6.3 检查状态结束请求
17.6.4 综合处理结束请求
17.7 总结
第18章 Nginx与设计模式
18.1 设计模式简介
18.2 框架级别的模式
18.3 业务级别的模式
18.4 代码级别的模式
18.5 总结
第19章 OpenResty开发
19.1 简介
19.1.1 历史
19.1.2 版本
19.1.3 组成
19.1.4 性能
19.1.5 安装
19.1.6 目录结构
19.1.7 命令行工具
19.1.8 参考手册
19.2 Lua语言
19.2.1 注释
19.2.2 数据类型
19.2.3 变量
19.2.4 运算
19.2.5 语句
19.2.6 函数
19.2.7 表
19.2.8 标准库
19.2.9 模块
19.3 LuaJIT
19.3.1 continue
19.3.2 bit
19.3.3 ffi
19.4 Lua模块
19.4.1 指令简介
19.4.2 配置指令
19.4.3 功能指令
19.4.4 指令关系图
19.4.5 应用开发流程
19.5 功能接口
19.5.1 运行日志
19.5.2 时间与日期
19.5.3 变量
19.5.4 正则表达式
19.5.5 请求处理
19.5.6 请求转发
19.5.7 子请求
19.5.8 定时器
19.5.9 共享内存
19.6 应用实例
19.6.1 处理请求
19.6.2 过滤请求
19.6.3 转发请求
19.6.4 子请求
19.7 Stream Lua模块
19.7.1 功能接口
19.7.2 discard
19.7.3 time
19.7.4 chargen
19.7.5 echo
19.8 lua-resty库
19.8.1 core
19.8.2 cjson
19.8.3 redis
19.9 总结
第20章 结束语
20.1 本书的遗憾
20.2 下一步
20.3 临别赠言
附录A 推荐书目
附录B GDB调试简介
附录C Nginx C++模块简介
附录D Nginx的字符串格式化
附录E nginScript简介
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜