Nginx开发从入门到精通
Nginx开发从入门到精通
缘起
nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部原理,但是国内却没有一本关于这方面的书,源于此我们决定自己来写一本。本书的作者为淘宝核心系统服务器平台组的成员,本书写作的思路是从模块开发逐渐过渡到nginx原理剖析。书籍的内容会定期在这里更新,欢迎大家提出宝贵意见,不管是本书的内容问题,还是字词错误,都欢迎大家提交issue(章节标题的左侧有评注按钮),我们会及时的跟进。
更新历史
日期 | 描述 |
---|---|
2012/03/01 | 创建目录大纲 |
2012/03/28 | 增加了样章 |
2012/05/25 | 更新样章 |
2012/06/08 | 增加第5章 |
2012/06/11 | 增加第4章 |
2012/06/26 | 增加第6章(event module) |
2012/06/27 | 更新第5章部分内容 |
2012/07/04 | 更新第6章event module部分内容 |
2012/07/12 | 增加第12章(请求头读取,subrequest解析) |
2012/08/14 | 增加第2章(nginx基础架构及基础概念) |
2012/08/14 | 增加第2章(ngx_str_t数据结构介绍) |
2012/08/17 | 增加第7章(模块开发高级篇之变量) |
2012/08/25 | 增加第11章(nginx的启动阶段部分内容) |
2012/09/26 | 增加第2章(ngx_array_t,ngx_hash_t及ngx_pool_t介绍) |
2012/10/08 | 增加第11章(配置解析综述) |
2012/10/12 | 增加第2章(ngx_hash_wildcard_t,ngx_hash_combined_t及ngx_hash_keys_arrays_t介绍) |
2012/10/21 | 增加第2章(ngx_chain_t,ngx_list_t及ngx_buf_t介绍) |
2012/11/09 | 增加第12章(请求体的读取和丢弃解析) |
2012/11/24 | 更新第2章(ngx_buf_t的部分字段以及其他一些书写错误和表达) |
2012/12/18 | 更新第11章(解析http块) |
2012/12/10 | 增加第3章的内容 |
2012/12/28 | 补充和完善了第3章的内容 |
2013/01/25 | 增加了第2章(nginx的配置系统) |
2013/02/18 | 增加了第2章(nginx的模块化体系结构, nginx的请求处理) |
2013/03/05 | 增加了第12章部分内容(多阶段请求处理) |
2013/03/08 | 完成第11章第1节(配置解析综述、ngx_http_block) |
2013/04/16 | 完成第9章第1节(源码目录结构、configure原理) |
2013/09/30 | 完成第12章部分内容(多阶段执行链各个阶段解析) |
2013/10/11 | 完成第12章部分内容(filter解析) |
2013/10/11 | 完成第12章部分内容(ssl解析) |
版权申明
本书的著作权归作者淘宝核心系统服务器平台组成员所有。你可以:
- 下载、保存以及打印本书
- 网络链接、转载本书的部分或者全部内容,但是必须在明显处提供读者访问本书发布网站的链接
- 在你的程序中任意使用本书所附的程序代码,但是由本书的程序所引起的任何问题,作者不承担任何责任
你不可以:
- 以任何形式出售本书的电子版或者打印版
- 擅自印刷、出版本书
- 以纸媒出版为目的,改写、改编以及摘抄本书的内容
目录
- 上篇:nginx模块开发篇
- 背景介绍
- nginx历史
- 使用简介
- nginx特点介绍
- nginx平台初探(100%)
- 初探nginx架构(100%)
- nginx基础概念(100%)
- connection
- request
- 基本数据结构(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 module
- http static module
- http log module
- 过滤模块 (90%)
- 过滤模块简介 (90%)
- 执行时间和内容 (90%)
- 执行顺序 (90%)
- 模块编译 (90%)
- 过滤模块的分析 (90%)
- 相关结构体 (90%)
- 响应头过滤函数 (90%)
- 响应体过滤函数 (90%)
- 过滤模块简介 (90%)
- upstream模块
- upstream模块 (100%)
- upstream模块接口
- memcached模块分析
- 本节回顾
- 负载均衡模块 (100%)
- 配置
- 指令
- 钩子
- 初始化配置
- 初始化请求
- peer.get和peer.free回调函数
- 本节回顾
- upstream模块 (100%)
- 其他模块 (40%)
- core模块 (40%)
- Nginx的启动模块 (40%)
- event模块 (40%)
- event的类型和功能 (40%)
- accept锁 (40%)
- 定时器 (40%)
- mail模块
- mail模块的实现
- mail模块的功能
- core模块 (40%)
- 模块开发高级篇(30%)
- 变量(80%)
- 综述
- 创建变量
- 使用变量
- upstream
- 使用subrequest访问upstream
- 超越upstream
- 使用lua模块
- 变量(80%)
- 背景介绍
- 下篇: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握手)
- 接收请求流程 (99%)
- 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 常见缺陷分析
- C.1 编译与安装
团队成员
叔度 (http://blog.zhuzhaoyuan.com)
雕梁 (http://www.pagefault.info)
文景 (http://yaoweibin.cn)
李子 (http://blog.lifeibo.com)
卫越 (http://blog.sina.com.cn/u/1929617884)
袁茁 (http://yzprofile.me)
小熊 (http://dinic.iteye.com)
吉兆 (http://jizhao.blog.chinaunix.net)
静龙 (http://blog.csdn.net/fengmo_q)
竹权 (http://weibo.com/u/2199139545)
公远 (http://100continue.iteye.com/)
布可 (http://weibo.com/sifeierss)
from: http://tengine.taobao.org/book/
Nginx开发从入门到精通相关推荐
- nginx开发从入门到精通 http://tengine.taobao.org/book/
nginx开发从入门到精通 http://tengine.taobao.org/book/
- nginx开发从入门到精通【淘宝核心系统服务器】
由淘宝核心系统服务器平台组撰写: http://tengine.taobao.org/book/ nginx运维与架构: http://www.nginx.cn/
- 免费下载《Nginx教程从入门到精通》.pdf
关注"Java后端技术全栈" 回复"面试"获取全套面试资料 什么是Nginx? Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/P ...
- 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序
本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...
- 《Visual C++ 开发从入门到精通》——2.7 变量
本节书摘来自异步社区出版社<Visual C++ 开发从入门到精通>一书中的第2章,第2.7节,作者: 王东华 , 李樱,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序
本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 《51单片机应用开发从入门到精通》——2.2 跑马灯实例
本节书摘来自异步社区<51单片机应用开发从入门到精通>一书中的第2章,第2.2节,作者 张华杰,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 跑马灯实例 ...
- 《libGDX移动游戏开发从入门到精通》一第2章 libGDX的架构分析
本节书摘来异步社区<libGDX移动游戏开发从入门到精通>一书中的第2章,第2.1节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 《C++ 开发从入门到精通》——第2章 C++的重要特质分析2.1 什么是面向对象(object-oriented)...
本节书摘来自异步社区出版社<C++ 开发从入门到精通>一书中的第2章,第2.1节,作者: 王石磊 , 韩海玲,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第2 ...
最新文章
- Git 常用操作(2)- 创建标签
- 程序员假冒AI,印度公司竟骗取2亿元投资
- 小希的迷宫(并查集)
- 用dotTace模仿下老赵的“使用Profiler分析程序性能”
- php Session存储到Redis的方法
- JZOJ __Day 3:【NOIP普及模拟】求和(sum)
- static成员函数和static成员
- TMG学习(十一),保护企业内网上网安全
- java rest 序列化_Django Rest Framework中的序列化和反序列化
- Android 系统(212)---monkey实战–测试步骤、常用参数、常规monkey命令
- P1379 八数码难题
- Junit单元测试的基本编码步骤
- 射频微波芯片设计6:射频电路中的噪声概论
- Protel.DXP2004 电路板设计
- REDSHIFT学习笔记-渲染设置3_GIPhotonSSS
- 人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)
- 抓包分析 TCP 握手和挥手
- 南昌大学计算机学硕推免生,太狠了:他们从南昌大学保研到北大、清华、复旦、浙大等顶尖名校...
- linux系统下grub.cfg详解和实例操作
- 我是没有口袋的哆啦a梦
热门文章
- 编辑docker容器中的文件
- 2020:编程语言大盘点
- Spring松耦合的个人理解和代码实例
- 以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学。对于创建个人的和动态的经历
- Exercise: Logistic Regression and Newton's Method
- Gradient Boost 算法流程分析
- Spring5源码 - 09 循环依赖解读
- Python 中文编码
- HTML基础_Day03
- python 包管理工具poetry