- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Emiller的模块开发指南
作者:Evan Miller 草稿: July 14, 2008 (changes)
译者:YaoWeibin 草稿:Sep 20,2008
0. 预备知识 1
1. Nginx模块任务委派的主要轮廓 1
2. Nginx模块的组成 3
2.1. 模块的配置结构体 3
2.2. 模块的指令 3
2.3. 模块的上下文 6
2.3.1. create_loc_conf 7
2.3.2. merge_loc_conf 8
2.4. 模块定义 9
2.5. 模块注册 9
2.5.1.处理模块的注册 10
2.5.2. 过滤模块的注册 10
3. 处理模块、过滤模块和 负载均衡模块 11
3.1. 剖析处理模块(非代理) 12
3.1.1. 获得位置配置结构体 12
3.1.2. 产生回复 12
3.1.3. 发送HTTP头部 13
3.1.4. 发送HTTP负载 14
3.2. 上游模块剖析(又称代理模块) 15
3.2.1.代理模块回调函数的概要 16
3.2.2. create_request 回调函数 17
3.2.3. process_header 回调函数 18
3.2.4. 状态保持 19
3.3. 剖析头部过滤函数 20
3.4. 剖析负载过滤函数 21
3.5. 剖析负载均衡模块 22
3.5.1.激活指令 23
3.5.2.注册函数 23
3.5.3.上游主机初始化函数 25
3.5.4.同伴初始化函数 26
3.5.5.负载均衡函数 28
3.5.6. 同伴释放函数 29
4. Advanced Topics 30
4.1. Shared Memory 30
4.1.1. A (fore)word of caution 31
4.1.2. Creating and using a shared memory segment 31
4.1.3. Using the slab allocator 33
4.1.4. Spinlocks, atomic memory access 34
4.1.5. Using rbtrees 35
4.2. Subrequests 36
4.2.1. Internal redirects 36
4.2.2. A single subrequest 36
4.2.3. Sequential subrequests 38
4.2.4. Parallel subrequests 40
4.3. TODO: Advanced Topics Not Yet Covered Here 40
5. Writing and Compiling a New Nginx Module 41
Appendix A: Code References 42
Appendix B: Changelog 42
翻译说明:
由于英语水平一般,接触Nginx时间不多,翻译中碰到的错误在所难免,如果您觉得哪里翻译得不对,请跟我联系:yaoweibin2008@163.com
Backend:后端备选服务器。
Buffer:缓冲区。
Callback:回调函数,一般来说是将某个回调函数赋值给某个函数指针
CHAIN OF RESPONSIBILITY:接力链表。
Filter:过滤模块/函数,模块和函数的概念似乎有点模糊不清。
Handler: 处理模块/函数,另外也有指向具体的处理函数的指针或句柄的意思。
Installation:愿意为安装,我觉得还是译作注册好点。
Load-balancer:负载均衡模块/函数。
Location:指URL位置,比如/photo/中的“/photo”目录。
Master:主进程,由主进程产生worker进程,同时也可以而监视worker进程的动态,worker因为异常而退出的时候也可以重启一个新的worker进程。
Reference:一般译作“引用”,不过很多时候,似乎还不如称作“指针”来的直接些。
Request:HTTP 请求。
Response:HTTP 回复。
Server-side:服务端。
Upstream:上游服务(器),有时亦称backend。
Worker:工作进程,模块真正发挥作用的地方。
0. 预备知识
对于C语言,你应该熟悉。不仅是会C的语法,对于结构体和预处理命令你应该有深入的理解,特别见到大量的指针和函数引用的时候不会惊慌失措。如果觉得需要补习,就多看看KR(C语言的语法书)。
如果你对于HTTP协议已经有了基本概念,那是很有好处的。毕竟你正在Web服务上工作。
你应该熟悉Nginx的配置文件。如果不熟悉,也没关系,这里有一些基本理解:Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)
文档评论(0)