NGINX完全开发指南:使用C.C++.JAVASCRIPT和LUA

本书特色

[

Nginx是著名的Web服务器,性能优异,运行效率远超传统的Apache、Tomcat,广泛应用于国内外诸多*互联网公司。Nginx的一个突出特点是其灵活优秀的模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如proxy、mysql、redis、rtmp、lua等),使得Nginx成长为了一个近乎“全能”的服务器软件。Nginx功能强大,架构复杂,学习、维护和开发的门槛较高。为了帮助读者跨越这一障碍,本书深入*的Nginx源码(Stable 1.16.0),详细剖析了模块体系、动态插件、功能框架、内存分配、进程模型、事件驱动、线程池、TCP/UDP/HTTP处理等Nginx核心运行机制,在此基础上讲解如何使用C、C 、JavaScript、Lua等语言来增强扩展Nginx,让任何人都能够便捷、轻松地开发和定制Nginx,进而应用到自己的实际工作中,创造出更多的价值。本书结构严谨、脉络清晰、论述精确、详略得当、图文并茂,值得广大软件开发工程师、系统运维工程师和编程爱好者拥有。

]

内容简介

[

Nginx是有名的Web服务器,性能优异,运行效率远超传统的Apache、Tomcat,广泛应用于靠前外诸多很好互联网公司。Nginx的一个突出特点是其灵活很好的模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如proxy、mysql、redis、rtmp、lua等),使得Nginx成长为了一个近乎“”的服务器软件。Nginx功能强大,架构复杂,学习、维护和开发的门槛较高。为了帮助读者跨越这一障碍,本书深入很新的Nginx源码(Stable 1.16.0),详细剖析了模块体系、动态插件、功能框架、内存分配、进程模型、事件驱动、线程池、TCP/UDP/HTTP处理等Nginx核心运行机制,在此基础上讲解如何使用C、C++、JavaScript、Lua等语言来增强扩展Nginx,让任何人都能够便捷、轻松地开发和定制Nginx,进而应用到自己的实际工作中,创造出更多的价值。本书结构严谨、脉络清晰、论述准确、详略得当、图文并茂,值得广大软件开发工程师、系统运维工程师和编程爱好者拥有。

]

作者简介

[

罗剑锋(网名Chrono)1996年就读于东北财经大学;1997年开始接触C/C ;1998年参加计算机软件专业技术资格和水平考试,获高级程序员资质;2003年毕业于北京理工大学,获计算机专业硕士学位。主要研究方向为C/C 、设计模式、高性能网络服务器开发,业余爱好是阅读、欣赏音乐和旅游。

]

目录

目录第0章 导读 10.1 于本书 10.2 读者对象 30.3 读者要求 40.4 运行环境 50.5 本书的结构 50.6 如何阅读本书 60.7 本书的源码 7第1章 Nginx入门 81.1 关于Nginx 81.1.1 历史 91.1.2 特点 91.1.3 进程模型 101.1.4 版本 121.2 安装Nginx 121.2.1 准备工作 131.2.2 快速安装 131.2.3 运行命令 141.2.4 验证安装 151.2.5 定制安装 161.3 配置Nginx 181.3.1 语法格式 191.3.2 进程管理 201.3.3 动态模块 221.3.4 运行日志 221.3.5 事件机制 221.4 HTTP服务 231.4.1 基本配置 241.4.3 location配置 251.4.4 file配置 261.5 TCP/UDP服务 271.6 反向代理 281.6.1 上游集群 281.6.2 负载均衡 291.6.3 代理转发 301.7 变量 301.8 总结 32第2章 Nginx开发准备 332.1 源码结构 332.2 源码特点 342.2.1 代码风格 342.2.2 代码优化 352.2.3 面向对象思想 352.3 头文件 362.4 总结 36第3章 Nginx基础设施 373.1 常数 373.1.1 环境信息 373.1.2 版本信息 383.1.3 错误码 383.2 整数类型 393.2.1 标准整数类型 393.2.2 自用整数类型 403.2.3 无效值 403.3 内存池 423.3.1 结构定义 423.3.2 操作函数 433.3.3 用法示例 443.4 字符串 443.4.1 结构定义 443.4.2 操作函数 453.4.3 用法示例 483.5 时间 493.5.1 结构定义 493.5.2 操作函数 493.5.3 用法示例 503.6 日期 503.6.1 结构定义 503.6.2 操作函数 513.6.3 用法示例 523.7 运行日志 523.7.1 结构定义 523.7.2 操作函数 533.7.3 用法示例 543.8 摘要算法 543.8.1 Times33 553.8.2 CRC 553.8.3 MurmurHash 563.8.4 MD5 573.8.5 SHA-1 573.9 数据编码 583.9.1 Base64 583.9.2 HTML/JSON 593.10 总结 60第4章 Nginx高级数据结构 614.1 动态数组 614.1.1 结构定义 624.1.2 操作函数 634.1.3 用法示例 644.2 单向链表 654.2.1 结构定义 654.2.2 操作函数 664.2.3 用法示例 664.3 双端队列 684.3.1 结构定义 684.3.2 操作函数 694.3.3 用法示例 714.4 红黑树 724.4.1 结构定义 734.4.2 操作函数 754.4.3 用法示例 764.5 缓冲区 784.5.1 结构定义 784.5.2 操作函数 804.5.3 用法示例 814.6 数据块链 824.6.1 结构定义 824.6.2 操作函数 834.6.3 用法示例 834.7 总结 84第5章 Nginx开发概述 855.1 开发示例 855.1.1 模块设计 855.1.2 配置解析 865.1.3 处理函数 885.1.4 模块集成 905.1.5 编译脚本 915.1.6 测试验证 925.2 开发流程 925.2.1 设计 935.2.2 开发 935.2.3 编译 945.2.4 测试验证 945.2.5 调优 945.2.6 流程图 955.3 编译脚本 955.3.1 运行机制 965.3.2 脚本变量 965.3.3 添加模块 975.3.4 脚本格式 975.3.5 旧式脚本 985.4 总结 99第6章 Nginx模块体系 1006.1 模块架构 1006.1.1 结构定义 1006.1.2 模块的签名 1026.1.3 模块的种类 1036.1.4 模块的函数指针表 1046.1.5 模块的类图 1056.1.6 模块的组织形式 1066.1.7 模块的静态加载 1086.1.8 模块的动态加载 1106.2 配置解析 1136.2.1 结构定义 1136.2.2 基本流程 1166.2.3 存储模型 1186.2.4 访问配置数据 1226.2.5 配置数据的位置 1236.2.6 配置数据的解析 1246.2.7 配置数据的合并 1266.2.8 配置指令的类型 1276.3 源码分析 1286.3.1 ngx_core_module 1286.3.2 ngx_errlog_module 1306.4 总结 132第7章 Nginx功能框架 1347.1 框架简介 1347.1.1 模块分类 1347.1.2 处理流程 1357.1.3 请求的处理阶段 1377.1.4 请求结构体 1387.1.5 请求的环境数据 1407.2 处理引擎 1417.2.1 函数原型 1417.2.2 处理函数的存储方式 1417.2.3 内容处理函数 1427.2.4 引擎的数据结构 1437.2.5 引擎的初始化 1447.2.6 引擎的运行机制 1457.2.7 日志阶段的处理 1487.3 过滤引擎 1487.3.1 函数原型 1487.3.2 过滤函数链表 1497.3.3 过滤函数的顺序 1507.3.4 过滤链表的运行机制 1527.3.5 请求体过滤 1537.4 源码分析 1537.4.1 ngx_http_static_module 1547.4.2 ngx_http_not_modified_filter_module 1557.5 总结 156第8章 Nginx请求处理 1588.1 状态码 1588.2 请求结构体 1598.3 请求行 1608.3.1 请求方法 1608.3.2 协议版本号 1618.3.3 资源标识符 1618.4 请求头 1628.5 请求体 1638.5.1 结构定义 1638.5.2 操作函数 1648.6 响应头 1648.6.1 结构定义 1648.6.2 操作函数 1658.7 响应体 1668.8 源码分析 1668.8.1 ngx_http_static_module 1668.8.2 ngx_http_not_modified_filter_module 1688.9 开发示例:content handler 1698.9.1 模块设计 1698.9.2 配置数据 1698.9.3 处理函数 1708.9.4 注册函数 1718.9.5 模块集成 1728.9.6 编译脚本 1738.9.7 测试验证 1738.10 开发示例:filter 1738.10.1 模块设计 1738.10.2 配置数据 1748.10.3 环境数据 1748.10.4 注册过滤函数 1758.10.5 过滤响应头 1758.10.6 过滤响应体 1768.10.7 模块集成 1788.10.8 编译脚本 1798.10.9 测试验证 1798.11 总结 180第9章 Nginx请求转发 1819.1 框架简介 1819.1.1 工作原理 1829.1.2 请求结构体 1839.1.3 上游结构体 1849.1.4 上游配置参数 1859.2 请求转发 1869.2.1 回调函数 1869.2.2 初始化 1889.2.3 设置参数 1899.2.4 启动连接 1909.2.5 处理响应头 1909.2.6 处理响应体 1919.3 负载均衡 1929.3.1 结构定义 1929.3.2 初始化模块入口 1969.3.3 初始化地址列表 1979.3.4 初始化算法 1999.3.5 执行算法 2009.4 源码分析 2009.4.1 ngx_http_memcached_module 2019.4.2 ngx_http_upstream_ip_hash_module 2039.5 开发示例:upstream 2069.5.1 模块设计 2069.5.2 配置数据 2069.5.3 上行数据 2089.5.4 下行数据 2089.5.5 启动转发 2099.5.6 注册函数 2109.5.7 模块集成 2109.5.8 编译脚本 2119.5.9 测试验证 2129.6 开发示例:balance 2129.6.1 模块设计 2129.6.2 配置数据 2129.6.3 算法数据结构 2139.6.4 模块入口 2139.6.5 算法实现 2149.6.6 模块集成 2159.6.7 编译脚本 2169.6.8 测试验证 2169.7 总结 216第10章 Nginx子请求 21810.1 框架简介 21810.1.1 工作原理 21910.1.2 请求结构体 22010.1.3 回调函数 22110.1.4 待处理请求链表 22310.1.5 子请求存储结构 22310.2 运行机制 22310.2.1 创建子请求 22410.2.2 处理引擎 22810.2.3 数据整理 22910.3 开发示例 23010.3.1 模块设计 23110.3.2 配置数据 23110.3.3 环境数据 23110.3.4 回调函数 23110.3.5 处理函数 23210.3.6 注册函数 23310.3.7 测试验证 23410.4 总结 234第11章 Nginx变量 23611.1 结构定义 23611.1.1 变量 23711.1.2 复杂变量 23811.1.3 变量的存储 23911.1.4 请求结构体 23911.2 操作变量 24011.2.1 添加变量 24011.2.2 获取变量 24111.2.3 修改变量 24211.2.4 编译复杂变量 24211.2.5 获取复杂变量 24211.3 开发示例:变量 24311.3.1 模块设计 24311.3.2 定义变量 24311.3.3 添加变量 24411.3.4 获取变量 24411.3.5 测试验证 24511.4 开发示例:复杂变量 24611.4.1 模块设计 24611.4.2 定义复杂变量 24611.4.3 编译复杂变量 24611.4.4 获取复杂变量 24711.4.5 测试验证 24711.5 总结 247第12章 Nginx内存管理机制 24912.1 基本系统调用 25012.1.1 malloc 25012.1.2 posix_memalign 25112.1.3 free 25112.2 块式内存池 25212.2.1 结构定义 25212.2.2 常量定义 25512.2.3 创建内存池 25512.2.4 分配内存 25712.2.5 分配大块内存 25812.2.6 分配小块内存 25912.2.7 释放内存 26412.2.8 清理机制 26412.2.9 清空内存池 26512.2.10 销毁内存池 26612.3 页式内存池 26712.3.1 结构定义 26812.3.2 常量定义 27012.3.3 初始化内存池 27112.3.4 分配内存 27312.3.5 分配大块内存 27512.3.6 分配小块内存 27712.3.7 释放内存 28012.4 总结 282第13章 Nginx进程机制 28413.1 基本系统调用 28413.1.1 errno 28413.1.2 getrlimit 28513.2 进程系统调用 28513.2.1 getpid 28513.2.2 fork 28613.2.3 waitpid 28613.3 信号系统调用 28713.3.1 kill 28713.3.2 sigactio

封面

NGINX完全开发指南:使用C.C++.JAVASCRIPT和LUA

书名:NGINX完全开发指南:使用C.C++.JAVASCRIPT和LUA

作者:罗剑锋

页数:608

定价:¥109.0

出版社:电子工业出版社

出版日期:2018-06-01

ISBN:9787121364365

PDF电子书大小:134MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注