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,阅读左侧有目录想看哪个章节直接点击就可以非常方便!