您的位置:首页 > 运维架构 > Nginx

Nginx开发从入门到精通

2017-05-09 17:05 253 查看
http://tengine.taobao.org/book/

缘起

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%)

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 常见缺陷分析

团队成员

叔度 (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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: