深入理解Nginx模块开发与架构解析.docx
《深入理解Nginx模块开发与架构解析.docx》由会员分享,可在线阅读,更多相关《深入理解Nginx模块开发与架构解析.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、深入理解Nginx:模块开发与架构解析深入理解Nginx:模块开发与架构解析基本信息作者: 陶辉 出版社:机械工业出版社ISBN:9787111414780上架时间:2013-3-20出版日期:2013 年4月开本:16开页码:1版次:1-1所属分类:计算机 计算机网络 Web Server WebServer内容简介 计算机书籍深入理解nginx:模块开发与架构解析是阿里巴巴资深nginx技术专家呕心沥血之作,是作者多年的经验结晶,也是目前市场上唯一一本通过还原nginx设计思想,剖析nginx架构来帮助读者快速高效开发http模块的图书。 深入理解nginx:模块开发与架构解析首先通过介绍
2、官方nginx的基本用法和配置规则,帮助读者了解一般nginx模块的用法,然后重点介绍如何开发http模块(含http过滤模块)来得到定制的nginx,其中包括开发一个功能复杂的模块所需要了解的各种知识,如nginx的基础数据结构、配置项的解析、记录日志的工具以及upstream、subrequest的使用方法等。在此基础上,综合nginx框架代码分析nginx的架构,介绍其设计理念和技巧,进一步帮助读者自由、有效地开发出功能丰富、性能一流的nginx模块。目录深入理解nginx:模块开发与架构解析 前言 第一部分nginx能帮我们做什么 第1章研究nginx前的准备工作 / 2 1.1ngi
3、nx是什么 / 2 1.2为什么选择nginx / 4 1.3准备工作 / 7 1.3.1linux操作系统 / 7 1.3.2使用nginx的必备软件 / 7 1.3.3磁盘目录 / 8 1.3.4linux内核参数的优化 / 9 1.3.5获取nginx源码 / 11 1.4编译安装nginx / 11 1.5configure详解 / 11 1.5.1configure的命令参数 / 12 1.5.2configure执行流程 / 18 1.5.3configure生成的文件 / 22 1.6nginx的命令行控制 / 24 1.7小结 / 27 第2章nginx的配置 / 28 .2.
4、1运行中的nginx进程间的关系 / 28 2.2nginx配置的通用语法 / 31 2.2.1块配置项 / 31 2.2.2配置项的语法格式 / 32 2.2.3配置项的注释 / 33 2.2.4配置项的单位 / 33 2.2.5在配置中使用变量 / 33 2.3nginx服务的基本配置 / 34 2.3.1用于调试进程和定位问题的配置项 / 34 2.3.2正常运行的配置项 / 36 2.3.3优化性能的配置项 / 38 2.3.4事件类配置项 / 39 2.4用http核心模块配置一个静态web服务器 / 41 2.4.1虚拟主机与请求的分发 / 42 2.4.2文件路径的定义 / 45
5、 2.4.3内存及磁盘资源的分配 / 48 2.4.4网络连接的设置 / 50 2.4.5mime类型的设置 / 53 2.4.6对客户端请求的限制 / 54 2.4.7文件操作的优化 / 55 2.4.8对客户端请求的特殊处理 / 57 2.4.9ngx_http_core_module模块提供的变量 / 59 2.5用http proxy module配置一个反向代理服务器 / 60 2.5.1负载均衡的基本配置 / 62 2.5.2反向代理的基本配置 / 64 2.6小结 / 68 第二部分如何编写http模块 第3章开发一个简单的http模块 / 70 3.1如何调用http模块 /
6、70 3.2准备工作 / 72 3.2.1整型的封装 / 72 3.2.2ngx_str_t数据结构 / 73 3.2.3ngx_list_t数据结构 / 73 3.2.4ngx_table_elt_t数据结构 / 77 3.2.5ngx_buf_t数据结构 / 77 3.2.6ngx_chain_t数据结构 / 79 3.3如何将自己的http模块编译进nginx / 79 3.3.1config文件的写法 / 80 3.3.2利用configure脚本将定制的模块加入到nginx中 / 80 3.3.3直接修改makefile文件 / 84 3.4http模块的数据结构 / 85 3.5定
7、义自己的http模块 / 88 3.6处理用户请求 / 92 3.6.1处理方法的返回值 / 92 3.6.2获取uri和参数 / 95 3.6.3获取http头部 / 98 3.6.4获取http包体 / 101 3.7发送响应 / 102 3.7.1发送http头部 / 102 3.7.2将内存中的字符串作为包体发送 / 104 3.7.3经典的“hello world”示例 / 106 3.8将磁盘文件作为包体发送 / 107 3.8.1如何发送磁盘中的文件 / 107 3.8.2清理文件句柄 / 110 3.8.3支持用户多线程下载和断点续传 / 111 3.9用c+语言编写http模
8、块 / 112 3.9.1编译方式的修改 / 112 3.9.2程序中的符号转换 / 114 3.10小结 / 114 第4章配置、error日志和请求上下文 / 115 4.1http配置项的使用场景 / 115 4.2怎样使用http配置 / 117 4.2.1分配用于保存配置参数的数据结构 / 117 4.2.2设定配置项的解析方式 / 119 4.2.3使用14种预设方法解析配置项 / 125 4.2.4自定义配置项处理方法 / 136 4.2.5合并配置项 / 137 4.3http配置模型 / 140 4.3.1解析http配置的流程 / 141 4.3.2http配置模型的内存布
9、局 / 144 4.3.3如何合并配置项 / 147 4.3.4预设配置项处理方法的工作原理 / 149 4.4error日志的用法 / 150 4.5请求的上下文 / 155 4.5.1上下文与全异步web服务器的关系 / 155 4.5.2如何使用http上下文 / 156 4.5.3http框架如何维护上下文结构 / 157 4.6小结 / 158 第5章访问第三方服务 / 159 5.1upstream的使用方式 / 160 5.1.1ngx_http_upstream_t结构体 / 163 5.1.2设置upstream的限制性参数 / 164 5.1.3设置需要访问的第三方服务器地
10、址 / 165 5.1.4设置回调方法 / 166 5.1.5如何启动upstream机制 / 166 5.2回调方法的执行场景 / 167 5.2.1create_request回调方法 / 167 5.2.2reinit_request回调方法 / 169 5.2.3finalize_request回调方法 / 170 5.2.4process_header回调方法 / 171 5.2.5rewrite_redirect回调方法 / 172 5.2.6input_filter_init与input_filter回调方法 / 172 5.3使用upstream的示例 / 173 5.3.1u
11、pstream的各种配置参数 / 174 5.3.2请求上下文 / 175 5.3.3在create_request方法中构造请求 / 176 5.3.4在process_header方法中解析包头 / 177 5.3.5在finalize_request方法中释放资源 / 180 5.3.6在ngx_http_mytest_handler方法中启动upstream / 181 5.4subrequest的使用方式 / 183 5.4.1配置子请求的处理方式 / 183 5.4.2实现子请求处理完毕时的回调方法 / 184 5.4.3处理父请求被重新激活后的回调方法 / 185 5.4.4启动
12、subrequest子请求 / 185 5.5subrequest执行过程中的主要场景 / 186 5.5.1如何启动subrequest / 186 5.5.2如何转发多个子请求的响应包体 / 188 5.5.3子请求如何激活父请求 / 192 5.6subrequest使用的例子 / 193 5.6.1配置文件中子请求的设置 / 194 5.6.2请求上下文 / 194 5.6.3子请求结束时的处理方法 / 195 5.6.4父请求的回调方法 / 196 5.6.5启动subrequest / 197 5.7小结 / 198 第6章开发一个简单的http过滤模块 / 199 6.1过滤模块
13、的意义 / 199 6.2过滤模块的调用顺序 / 200 6.2.1过滤链表是如何构成的 / 200 6.2.2过滤链表的顺序 / 203 6.2.3官方默认http过滤模块的功能简介 / 204 6.3http过滤模块的开发步骤 / 206 6.4http过滤模块的简单例子 / 207 6.4.1如何编写config文件 / 208 6.4.2配置项和上下文 / 208 6.4.3定义http过滤模块 / 210 6.4.4初始化http过滤模块 / 211 6.4.5处理请求中的http头部 / 212 6.4.6处理请求中的http包体 / 213 6.5小结 / 214 第7章ngin
14、x提供的高级数据结构 / 215 7.1nginx提供的高级数据结构概述 / 215 7.2ngx_queue_t双向链表 / 217 7.2.1为什么设计ngx_queue_t双向链表 / 217 7.2.2双向链表的使用方法 / 217 7.2.3使用双向链表排序的例子 / 219 7.2.4双向链表是如何实现的 / 221 7.3ngx_array_t动态数组 / 222 7.3.1为什么设计ngx_array_t动态数组 / 223 7.3.2动态数组的使用方法 / 223 7.3.3 使用动态数组的例子 / 225 7.3.4动态数组的扩容方式 / 226 7.4ngx_list_t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 理解 Nginx 模块 开发 架构 解析
限制150内