Nginx是著名的Web服务器,性能优异,运行效率远超传统的Apache、Tomcat, 广泛应用于国内外诸多顶级互联网公司。
Nginx的一个突出特点是其灵活优秀的模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如proxy、 mysql、 redis、 rtmp、 lua等),使得Nginx成长为了一个近乎“全能”的服务器软件。
Nginx功能强大,架构复杂,学习、维护和开发的门槛较高。为了帮助读者跨越这一-障碍, 本书深入最新的Nginx源码(Stable 1.12.0),详细剖析了模块体系、动态插件、功能框架、进程模型、事件驱动、线程池、TCP/UDP/HTTP 处理等Nginx核心运行机制,在此基础上讲解如何使用C、C++、 Lua、nginScript等语言来增强扩展Nginx,让任何人都能够便捷、轻松地开发和定制Nginx,进而应用到自己的实际工作中,创造出更多的价值。
前言
最早接触Nginx大概是在2011年,面对着一个全新的Web服务器,和大多数人一样最初我也是一片茫然,能找到的参考资料十分有限,安装、配置、运行几乎都是“摸着石头过河”,犯过许多低级错误。随着对Nginx逐渐熟悉,它的高并发处理能力给我留下了深刻的印象,作为一个开源软件的爱好者,很自然地想要探究一下它的内部工作原理。我由此开始了对Nginx源码的钻研之路,中间经过了很多的艰辛曲折,走过不少的弯路。
Nginx的横空出世为Web服务器开辟了一个崭新的天地,它搭建了一个高性能的服务器
开发框架,而且是一个完整的、全功能的服务器。模块化的架构设计很好地分离了底层支撑模
块和上层逻辑模块,底层模块处理了配置、并发等服务器的外围功能,核心支撑模块定义了主
体的TCP/HTTP处理框架。开发者可以把大部分精力集中在上层的业务功能实现上,再也不
必去为其他杂事而分心,提高了软件的开发效率。
好了话不多说直接上目录
- 第1章Nginx入门
- 第2章Nginx开发准备
- 第3章Nginx基础设施
- 第4章Nginx高级数据结构
- 第5章Nginx开发综述
- 第6章Hginx模块体系
- 第7章Nginx HTTP框架综述
- 第8章Nginx HTTP请求处理
- 第9章Nginx HTTP请求转发
- 第10章Nginx HTTP子请求
- 第11章Hgix变量
- 第12章Hginx辅助设施
- 第13章Hginx进程机制
- 第14章Hginx事件机制
- 第15章Hginx多线程机制
- 第16章Nginx Stre am机制
- 第17章Nginx HTTP机制
- 第18章Hginx与设计模式
- 第19章OpenResty开发
- 第20章结束语
内容概述
因本书内容过多所以在上面本文一开始就为大家展示了20个大章节,每一大章节后有很多小章节,因文章不够所以小章节就不给大家一一展示了。大家可以转发+关注后私信(学习)获取到这本PDF,阅读左侧有目录想看那个章节直接点击就可以非常方便!
全书共20章,大致可分为四部分:
第1章是入门知识,简要介绍Nginx的安装和使用;第2章至第12章重点讲解使用C/C++语言开发定制Nginx,主要是“知其然”;第13章至第18章则深入Nginx的内部,剖析它的底层运行机制,帮助读者深层次地理解Nginx,是“知其所以然”:第19章专门介绍OpenResty,它可以用Lua语言快速开发出高性能的Web应用。
各章的内容简介如下:
第1章:Nginx入门
简要介绍Nginx的历史和特点,以及如何编译、安装和配置Nginx,可以当作是一本浓缩精华的Nginx使用手册。
第2章: Nginx开发准备
本章是开发Nginx模块前的准备工作,介绍本书使用的C++11标准和Boost程序库,还有Nginx源码的目录结构、基本的代码风格和特点。针对Nginx源码的特点提出了C++的解决方案,实现了一个对Nginx数据结构的C++封装类。
第3章: Nginx基础设施
剖析Nginx这样复杂的系统必须从最底层的基础设施开始,本章首先介绍了Nginx框架里基本的整数类型和错误码,然后再研究内存池、字符串、时间日期和运行日志,同时使用C++11标准进行了面向对象的封装,打造出方便易用的基础工具类。
第4章:Nginx高级数据结构
本章研究ngx_ array_ t、ngx_ list_ _t、ngx_ queue_ t、ngx_ buf_ t、ngx_ rbtree_ t等各种高级Nginx数据结构,它们类似C++的标准容器,在Nginx框架里经常出现,必须很好地理解并掌握它们的特性和用法,C++封装能够让这些数据结构更容易使用。
第5章: Nginx开发综述
本章使用一个简单的例子介绍Nginx开发的基本流程,并讲解了如何编写模块集成脚本。
第6章: Nginx模块体系
本章详细剖析Nginx的模块架构和配置解析原理,这是Nginx开发必需的重要技术,也是理解Nginx架构的关键,最后实现了C++封装类,开发出现代C++风格的Nginx模块。
第7章: Nginx HTTP 框架综述
本章深入研究Nginx的HTTP处理框架,解析http模块的核心工作原理和流程,包括处理阶段、处理引擎、过滤链表等重要概念。
第8章:NginxHTTP请求处理
本章详细解析ngx_ http_ request_ t结构,讲解请求头、请求体、响应头、响应体等数据成员和它们的操作方法,实现Nginx里最常用的handler模块和filter模块。
第9章: Nginx HTTP 请求转发
本章解析Nginx的请求转发机制,它是Nginx反向代理的基础,实现转发请求的upstream模块和负载均衡的load-balance模块,访问外部的网络资源。
第10章: Nginx HTTP 子请求
本章讲解Nginx的子请求机制,可以让Nginx像调用函数那样调用location里的功能,发起多个子请求实现复杂的业务逻辑,让Nginx变成一台强大的应用服务器。
第11章: Nginx变量
Nginx内置非常灵活的变量机制,是配置指令之外另一种与模块通信的方式,增强了静态的配置文件与动态运行的模块之间的互操作性。本章剖析了变量机制的工作原理,实现了易用的C++封装类。
第12章:Nginx辅助设施
本章介绍Nginx提供的一.些实用工具,包括MD5/SHA-1摘要、CRC/Base64/URI编解码、正则表达式、共享内存等,它们是并发处理和协议解析之外实现一个完善的Web服务器所必需的辅助功能。
第13章:Nginx进程机制
Nginx使用了进程池模式,以一个master进程管理多个worker进程,可以充分地利用多核CPU。本章先介绍基本的UNIX系统调用,然后配合图解详细研究Nginx的信号处理、启动过程、单进程和多进程的工作流程及要点。
第14章: Nginx事件机制
事件驱动机制是Nginx高性能的关键,本章详细阐述socket系统调用、epoll 工作原理、事件模块体系和相关的数据结构、使用多幅流程图完整解析了连接池、监听端口、接受连接、处理网络和定时器事件、负载均衡等Nginx的核心功能。
第15 章: Nginx 多线程机制
Nginx主要使用单线程加事件驱动,但也对多线程提供了有限的支持,本章介绍Nginx多线程机制的工作原理:线程池+生产者/消费者,还给出了一个实际的开发示例。
第16章: Nginx Stream 机制
Nginx从1.9.0开始引入了Stream框架,支持直接处理TCP/UDP协议,相当于是一个简化版的HTTP框架,研究它可以更好地理解进程机制和事件机制在处理请求时的作用。本章解析Stream机制的模块体系和运行机制,并实现了discard、time等基本的应用协议。
第17章: Nginx HTTP 机制
本章是第7章的进阶内容,结合事件机制,使用源码辅以流程图,详细介绍HTTP框架的关键运行机制,包括初始化连接、阶段式处理引擎、读取数据、发送数据和结束请求等。
第18章: Nginx与设计模式
本章综合之前章节的内容,简要总结了在Nginx里应用的一些设计模式,帮助读者从设计模式的角度来进一步理解Nginx架构。
第19章: OpenResty 开发
OpenResty是一个个“比Nginx更好的Nginx",它集成了众多优良的Nginx模块和库,可以用动态语言Lua快速开发出高质量高性能的Web应用。本章介绍了OpenResty相关的各方面知识,包括Lua语言、LuaJIT、配置指令、功能接口和开发示例,而且完全从零起步,编程初学者也可以较容易地掌握这些知识。
因本书内容过多所以在上面本文一开始就为大家展示了20个大章节,每一大章节后有很多小章节,因文章不够所以小章节就不给大家一一展示了。大家可以转发+关注后私信(学习)获取到这本PDF,阅读左侧有目录想看哪个章节直接点击就可以非常方便!