Nginx 高性能 Web 服务器详解
Nginx 高性能 Web 服务器详解
编辑推荐
- 如何在实战中熟练使用 Nginx?
- 如何发挥 Nginx 的性能?
- 如何很快理清 Nginx 的框架脉络?
- 如何在理解 Nginx 源码的基础上提高自己的编程能力?
- 《Nginx 高性能 Web 服务器详解》依托大量的实战经验,汇集经典的应用实例,帮助读者理解架构设计,理清原理脉络,提高实战技能。
内容简介
《Nginx 高性能 Web 服务器详解》全面介绍了当前 Internet 上流行的一款开放源代码的 Web 服务器——Nginx。全书一共分为四大部分,分别从入门、功能、实现和应用等四个方面对 Nginx 服务器的知识进行完整阐述,从而满足广大读者在应用 Nginx 服务器时的普遍性需求。同时也深入剖析了 Nginx 服务器的工作原理和实现技术,对其中使用到的数据结构和方法进行了详细阐述,并且结合实际的应用情况给出了多个基于 Nginx 服务器,同时还部署有其他典型服务器的分布式网站架构部署配置。
《Nginx 高性能 Web 服务器详解》特别适合于希望了解和掌握 Nginx 服务器应用技术和实现技术的广大教师、学生和电脑爱好者阅读,对使用 Nginx 服务器搭建 Web 服务器架构或进行网络服务器应用开发的技术人员尤其具有重要的阅读和参考价值。
作者简介
苗泽,Linux 研发工程师,GIS 研发工程师,分布式系统研究人员。先后在中国科学院地理科学与资源研究所、北京邦诺存储科技有限公司研发中心、中国科学院电子学研究所从实研发工作。热爱互联网,并热衷于各种 Web 技术,对多种语言均有涉猎,擅长 Linux 和 GIS 相关研发工作,拥有丰富的 Web 技术实战经验,愿意与他人分享自己对技术的理解与感悟。
目录
第 1 章 Nginx 初探
- 1.1 Nginx 的历史
- 1.2 常见服务器产品介绍
- 1.2.1 Apache 服务器
- 1.2.2 Microsoft IIS
- 1.2.3 Tomcat 服务器
- 1.2.4 Lighttpd 服务器
- 1.2.5 Nginx 诞生记
- 1.2.6 版本变更大事记
- 1.3 Nginx 的功能特性
- 1.3.1 基本 HTTP 服务
- 1.3.2 高级 HTTP 服务
- 1.3.3 邮件代理服务
- 1.4 常用功能介绍
- 1.4.1 HTTP 代理和反向代理
- 1.4.2 负载均衡
- 1.4.3 Web 缓存
- 1.5 本章小结
第 2 章 Nginx 服务器的安装部署
- 2.1 如何获取 Nginx 服务器安装文件
- 2.1.1 获取新版本的 Nginx 服务器
- 2.1.2 获取 Nginx 服务器的历史版本
- 2.2 安装 Nginx 服务器和基本配置
- 2.2.1 Windows 版本的安装
- 2.2.2 Linux 版本的编译和安装:准备工作
- 2.2.3 Linux 版本的编译和安装:Nginx 软件的自动脚本
- 2.2.4 Linux 版本的编译和安装:Nginx 源代码的编译和安装
- 2.3 Nginx 服务的启停控制
- 2.3.1 Nginx 服务的信号控制
- 2.3.2 Nginx 服务的启动
- 2.3.3 Nginx 服务的停止
- 2.3.4 Nginx 服务的重启
- 2.3.5 Nginx 服务器的升级
- 2.4 Nginx 服务器基础配置指令
- 2.4.1 nginx.conf 文件的结构
- 2.4.2 配置运行 Nginx 服务器用户(组)
- 2.4.3 配置允许生成的 worker process 数
- 2.4.4 配置 Nginx 进程 PID 存放路径
- 2.4.5 配置错误日志的存放路径
- 2.4.6 配置文件的引入
- 2.4.7 设置网络连接的序列化
- 2.4.8 设置是否允许同时接收多个网络连接
- 2.4.9 事件驱动模型的选择
- 2.4.10 配置最大连接数
- 2.4.11 定义 MIME-Type
- 2.4.12 自定义服务日志
- 2.4.13 配置允许 sendfile 方式传输文件
- 2.4.14 配置连接超时时间
- 2.4.15 单连接请求数上限
- 2.4.16 配置网络监听
- 2.4.17 基于名称的虚拟主机配置
- 2.4.18 基于 IP 的虚拟主机配置
- 2.4.19 配置 location 块
- 2.4.20 配置请求的根目录
- 2.4.21 更改 location 的 URI
- 2.4.22 设置网站的默认首页
- 2.4.23 设置网站的错误页面
- 2.4.24 基于 IP 配置 Nginx 的访问权限
- 2.4.25 基于密码配置 Nginx 的访问权限
- 2.5 Nginx 服务器基础配置实例
- 2.5.1 测试 myServer1 的访问
- 2.5.2 测试 myServer2 的访问
- 2.6 本章小结
第 3 章 Nginx 服务器架构初探
- 3.1 模块化结构
- 3.1.1 什么是“模块化设计”
- 3.1.2 Nginx 模块化结构
- 3.2 Nginx 服务器的 Web 请求处理机制
- 3.2.1 多进程方式
- 3.2.2 多线程方式
- 3.2.3 异步方式
- 3.2.4 Nginx 服务器如何处理请求
- 3.2.5 Nginx 服务器的事件处理机制
- 3.3 Nginx 服务器的事件驱动模型
- 3.3.1 事件驱动模型概述
- 3.3.2 Nginx 中的事件驱动模型
- 3.3.3 select 库
- 3.3.4 poll 库
- 3.3.5 epoll 库
- 3.3.6 rtsig 模型
- 3.3.7 其他事件驱动模型
- 3.4 设计架构概览
- 3.3.1 Nginx 服务器架构
- 3.3.2 Nginx 服务器的进程
- 3.3.3 进程交互
- 3.3.4 Run Loops 事件处理循环模型
- 3.5 本章小结
第 4 章 Nginx 服务器的高级配置
- 4.1 针对 IPv4 的内核 7 个参数的配置优化
- 4.2 针对 CPU 的 Nginx 配置优化的 2 个指令
- 4.3 与网络连接相关的配置的 4 个指令
- 4.4 与事件驱动模型相关的配置的 8 个指令
- 4.5 本章小结
第 5 章 Nginx 服务器的 Gzip 压缩
- 5.1 由 ngx_http_gzip_module 模块处理的 9 个指令
- 5.2 由 ngx_http_gzip_static_module 模块处理的指令
- 5.3 由 ngx_http_gunzip_module 模块处理的 2 个指令
- 5.4 Gzip 压缩功能的使用
- 5.4.1 Gzip 压缩功能综合配置实例
- 5.4.2 Gzip 压缩功能与 IE6 浏览器运行脚本的兼容问题
- 5.4.3 Nginx 与其他服务器交互时产生的 Gzip 压缩功能相关问题
- 5.5 本章小结
第 6 章 Nginx 服务器的 Rewrite 功能
- 6.1 Nginx 后端服务器组的配置的 5 个指令
- 6.2 Rewrite 功能的配置
- 6.2.1 “地址重写”与“地址转发”
- 6.2.2 Rewrite 规则
- 6.2.3 if 指令
- 6.2.4 break 指令
- 6.2.5 rewrite 指令
- 6.2.6 rewrite_log 指令
- 6.2.7 set 指令
- 6.2.8 uninitialized_variable_warn 指令
- 6.2.9 Rewrite 常用全局变量
- 6.3 Rewrite 的使用
- 6.3.1 域名跳转
- 6.3.2 域名镜像
- 6.3.3 独立域名
- 6.3.4 目录自动添加“/”
- 6.3.5 目录合并
- 6.3.6 防盗链
- 6.4 本章小结
第 7 章 Nginx 服务器的代理服务
- 7.1 正向代理与反向代理的概念
- 7.2 Nginx 服务器的正向代理服务
- 7.2.1 Nginx 服务器正向代理服务的配置的 3 个指令
- 7.2.2 Nginx 服务器正向代理服务的使用
- 7.3 Nginx 服务器的反向代理服务
- 7.3.1 反向代理的基本设置的 21 个指令
- 7.3.2 Proxy Buffer 的配置的 7 个指令
- 7.3.3 Proxy Cache 的配置的 12 个指令
- 7.4 Nginx 服务器的负载均衡
- 7.4.1 什么是负载均衡
- 7.4.2 Nginx 服务器负载均衡配置
- 7.4.3 配置实例一:对所有请求实现一般轮询规则的负载均衡
- 7.4.4 配置实例二:对所有请求实现加权轮询规则的负载均衡
- 7.4.5 配置实例三:对特定资源实现负载均衡
- 7.4.6 配置实例四:对不同域名实现负载均衡
- 7.4.7 配置实例五:实现带有 URL 重写的负载均衡
- 7.5 本章小结
第 8 章 Nginx 服务器的缓存机制
- 8.1 Web 缓存技术简述
- 8.2 404 错误驱动 Web 缓存
- 8.3 资源不存在驱动 Web 缓存
- 8.4 基于 memcached 的缓存机制的 6 个指令
- 8.5 Proxy Cache 缓存机制
- 8.6 Nginx 与 Squid 组合
- 8.6.1 Squid 服务器的配置
- 8.6.2 Nginx 服务器的配置
- 8.7 基于第三方模块 ncache 的缓存机制
- 8.8 本章小结
第 9 章 Nginx 服务器的邮件服务
- 9.1 邮件服务
- 9.2 Nginx 邮件服务的配置的 12 个指令
- 9.3 Nginx 邮件服务配置实例
- 9.4 本章小结
第 10 章 Nginx 源码结构
- 10.1 Nginx 源码的 3 个目录结构
- 10.1.1 core 目录
- 10.1.2 event 目录
- 10.1.3 http 目录
- 10.2 Nginx 源码的模块化结构
- 10.2.1 公共功能
- 10.2.2 配置解析
- 10.2.3 内存管理
- 10.2.4 事件驱动
- 10.2.5 日志管理
- 10.2.6 HTTP 服务
- 10.2.7 Mail 服务
- 10.2.8 模块支持
- 10.3 本章小结
第 11 章 Nginx 基本数据结构
- 11.1 ngx_module_s 结构体
- 11.1.1 分类标识 ctx_index
- 11.1.2 模块计数器 index
- 11.1.3 模块上下文
- 11.1.4 回调函数
- 11.2 ngx_command_s 结构体
- 11.2.1 type 成员
- 11.2.2 函数指针 set
- 11.2.3 conf 和 offset
- 11.3 3 个基本模块的指令集数组结构
- 11.3.1 http 模块
- 11.3.2 event 模块