决战Nginx系统卷――高性能Web服务器详解与运维

/ 书籍 / 0 条评论 / 590浏览 / 我要评论

下载

电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍

封页

封页

编辑推荐

*用心的作品,**调的作者。

内容简介

  在这个点击率就是生命的时代,高可用是不可少的。本书完整讲述了Nginx服务器的各种技术细节以及安装、部署、运维等方面的内容。   本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器*的焦点在于高并发和反向代理,在不多却足够使用的模块下实现了更多的功能。   在第二部分中,通过具体使用实例讲述了Nginx的模块(包括官方模块和第三方模块),并详细介绍了充分使用Nginx的方式方法。同时在这里使用了Heartbeat服务实现Nginx服务器的高可用。   本书的最后一部分是关于Nginx使用缓存技术的方法,共列举了Nginx使用的五大缓存,特别是广泛使用的代理缓存、Memcached和Varnish,另外对于Memcached服务器的使用贯穿了整套书。在本书中着重讲述了它的协议、原理和使用,而在本书姊妹篇中则通过不同语言的客户端对Memcached服务器实现具体使用。   本书适用于广大的Linux爱好者、具有一定Linux基础的系统管理员、Linux下的Web服务器管理员、Linux服务器下动态语言开发人员、Nginx服务器管理员、培训中心师生、运维人员以及一切应该了解和使用Nginx的用户。

作者简介

  陶利军,互联网行业高端低调人士,专注于Linux平台下开源产品的研究和推广,运维构架(服务搭建、集群及高可用),网络安全评估,分布式存储等。

目 录

目    录

第1部分  Nginx服务器
 
第1章  Nginx的功能
1.1  功能描述
1.1.1  基本HTTP功能
1.1.2  其他HTTP功能
1.1.3  邮件代理服务器功能
1.1.4  架构和可扩展性
1.1.5  被测试的系统和平台
1.2  服务器的类型
1.3  认识Nginx服务器的基本模块
1.3.1  Nginx的内核模块
1.3.2  Nginx的事件模块
1.3.3  Nginx的HTTP内核模块
第2章  Nginx的模块管理和
进程管理
2.1  模块管理
2.1.1  从源码看模块
2.1.2  选择使用Nginx的模块
2.1.3  Nginx使用第三方模块
2.2  进程管理
2.2.1  master进程和worker进程
2.2.2  关于worker数目的设置
2.3  针对Nginx对Linux系统的优化
2.3.1  关闭系统中不需要的服务
2.3.2  优化写磁盘操作
2.3.3  优化资源限制
2.3.4  优化内核TCP选项
2.4  优化Nginx服务器
2.4.1  关闭访问日志
2.4.2  使用epoll
2.4.3  Nginx服务器配置优化
第3章  Nginx如何处理一个请求
3.1  IP、域名部分的处理
3.1.1  基于名字的虚拟主机
3.1.2  阻止处理对不明确主机名
的请求
3.1.3  基于IP和域名的虚拟域名
服务器处理请求
3.2  URI部分的处理
3.2.1  实例
3.2.2  分析
第4章  服务器名字
4.1  通配符名字
4.2  正则表达式名字
4.3  其他不同种类的名字
4.4  名字优化
4.5  兼容性
4.6  对服务器名字的扩展
4.7  基于目录名的域名访问
4.7.1  正则表达式处于主机名字
的位置上
4.7.2  正则表达式处于域名
的位置上
4.8  关于$1、$2…的使用

第5章  协助用户操作Nginx
的工具
5.1  工具1——nginx.vim
5.1.1  下载与安装
5.1.2  使用
5.2  工具2——eperusio-nginx_ensit
5.2.1  下载与安装
5.2.2  相关命令
5.2.3  实例
5.3  工具3——htpasswd.py
5.3.1  下载文件
5.3.2  命令的使用方法
5.4  工具4——Nginx启动脚本
第6章  5xx错误及处理
6.1  500内部服务器错误
6.1.1  问题分析
6.1.2  问题解决
6.2  502问题—— 502 bad gateway
6.3  504问题—— 504 gateway
time-out
第7章  使用TCMalloc优化
Nginx
7.1  相关安装
7.2  配置示例
7.3  指令
7.4  使用实例
第8章  PCRE正则表达式
8.1  安装PCRE
8.2  命令
8.2.1  pcre-config命令
8.2.2  pcretest命令
8.3  man目录
8.4  Nginx与正则表达式
8.4.1  正则表达式支持UTF-8
8.4.2  Nginx使用正则表达式
第9章  Nginx高可用的实现
9.1  安装Heartbeat
9.1.1  下载安装glue
9.1.2  下载安装Heartbeat
9.1.3  安装agents
9.2  配置Heartbeat
9.2.1  ha.cf文件
9.2.2  haresources文件
9.2.3  authkeys文件
9.3  启动Heartbeat
9.3.1  环境部署
9.3.2  启动主Heartbeat
9.3.3  启动备用Heartbeat
9.4  测试Heartbeat
9.4.1  宕掉主节点
9.4.2  重新启动主节点
第10章  10个QA
10.1  什么是Nginx
10.2  Nginx可以安装在哪些
操作系统下
10.3  Nginx在Windows下的性能
如何
10.4  Nginx与Apache比较有哪些
优点
10.5  Nginx解决了C10k问题
10.6  从Nginx接收客户端请求处理的
角度来说,它与Apache
有何不同
10.7  安装完成Nginx后,如何查看
Nginx的版本
10.8  安装完成Nginx后,如何查看
configure时的配置
10.9  启动Nginx后,能不能看到Nginx
当前都支持哪些模块
10.10  Https仅能用在指定的
目录下吗
 
第2部分  Nginx服务器的功能模块
 
第11章  限 制 流 量
11.1  指令
11.2  实例配置
第12章  限制用户并发连接数
12.1  示例配置
12.2  指令
12.3  配置实例
第13章  修改或隐藏Nginx
的版本号
13.1  隐藏版本号
13.2  修改版本号
第14章  配置FLV服务器
14.1  示例配置
14.2  指令
14.3  配置实例
第15章  Nginx的访问控制
15.1  配置示例
15.2  指令
15.3  使用实例
第16章  提供FTP下载
16.1  配置示例
16.2  指令
16.3  使用实例
第17章  Nginx与编码
17.1  文件和文件名的编码
17.2  使用convmv
17.3  使用enca
17.4  字符集设置模块
第18章  网页压缩传输
18.1  HttpGzipModule
18.2  HttpGzipStaticModule
第19章  控制Nginx如何记录日志
第20章  map模块的使用
第21章  Nginx预防应用层DDoS
攻击
21.1  Limit request模块
21.2  访问测试
21.2.1  限制连接数
21.2.2  未限制连接数
第22章  为Nginx添加、清除或
改写响应
22.1  HttpHeadersModule
22.2  ngx_headers_more
第23章  重写URI
第24章  Nginx与服务器端包含
24.1  ssi指令
24.2  使用实例
第25章  Nginx与X-Sendfile
25.1  处理流程
25.2  特殊头
25.3  使用实例
第26章  在Nginx的响应体之前或
之后添加内容
第27章  Nginx与访问者的
地理信息
第28章  Nginx的图像处理
第29章  location中随机
显示文件
第30章  后台Nginx服务器记录
原始客户端的IP地址
第31章  解决防盗链
31.1  使用Referer模块
31.2  使用AccessKey模块
31.3  使用SecureLink模块
第32章  Nginx提供HTTPS服务
32.1  兼容性
32.2  安装SSL服务
32.3  通配符证书
32.4  变量
32.5  非标准的错误代码
32.6  使用举例
32.6.1  单向认证
32.6.2  更新Nginx配置
32.6.3  访问测试
32.6.4  双向认证
32.6.5  创建相关目录
32.7  HTTPS 服务器优化
第33章  监控Nginx的工作状态
第34章  使用empty_gif
第35章  Nginx实现对响应体内容
的替换
第36章  Nginx的WebDAV
第37章  Nginx的Xslt模块
第38章  Nginx的基本认证方式
38.1  生成密码
38.2  添加配置
38.3  访问测试
第39章  Nginx的cookie
第40章  Nginx基于客户端请求头
的访问分
第41章  通过Upstream模块使得
Nginx实现后台服务器
集群
第42章  根据浏览器选择主页
第43章  关于Nginx提供下载.ipa或
.apk文件的处理方法
第44章  SCGI
44.1  被传递给SCGI服务器的参数
44.2  实例1:Perl语言的应用
44.3  实例2:Python语言的应用
44.4  在Nginx中使用Etag
第45章  Expires与ETag
45.1  安装nginx-static-etags模块
45.2  安装nginx-dynamic-etags模块
45.3  四个头的区别与联系
第46章  使用upstream_keepalive
模块实现keep-live
第47章  后台服务器的健康检测
第48章  使用sticky模块实现
粘贴性会话
第49章  Nginx对后台服务器实现
“公平”访问
第50章  Nginx使用redis数据库
50.1  安装redis模块
50.2  安装redis2模块
50.3  关于redis
第51章  Nginx访问MongoDB
51.1  安装nginx-gridfs模块
51.2  关于MongoDB
第52章  Nginx访问Mogilefs
 
第3部分  Nginx与缓存
 
第53章  缓存技术——proxy
_cache
5.31  了解cache_purge模块
53.2  设置Nginx的配置文件
53.3  访问测试
53.4  手动清除缓存
第54章  缓存技术——proxy
_store
54.1  设置Nginx的配置文件
54.2  访问测试
54.3  手动清除缓存
第55章  缓存技术——Memcached
55.1  Memcached服务器
55.2  下载并安装libevent库
55.3  下载并安装Memcached
55.4  Memcached的其他工具
55.4.1  damemtop
55.4.2  memcached-init
55.4.3  start-memcached
55.4.4  memcached.sysv
55.4.5  memcached-tool
55.5  查看Memcached服务的
运行情况
55.6  服务器的运行情况——详细了解
Memcached的协议
55.6.1  通信协议
55.6.2  键(Key)
55.6.3  命令
55.6.4  过期时间
55.6.5  错误字符串
55.6.6  存储数据的命令
55.6.7  获取数据的命令
55.6.8  删除数据的命令
55.6.9  增加/减少数据的命令
55.6.10  查询存储状态的命令
55.6.11  多方面统计命令
55.6.12  条目统计命令
55.6.13  其他命令
55.6.12  UDP协议
55.7  Nginx的Memcached模块
55.8  Memcached的客户端
55.9  libmemcached
55.9.1  libmemcached的安装
55.9.2  命令
55.9.3  函数
第56章  缓存技术——NCache
56.1  NCache工作层示意图
56.2  请求逻辑图
56.3  安装NCache
56.4  配置文件
第57章  缓存技术——Varnish
57.1  了解Varnish
57.2  Varnish的访问部署
57.2.1  第一种部署方案:Varnish
提供80访问
57.2.2  第二种部署方案:Varnish
位于Nginx之后只提供
缓存
57.3  Nginx与Varnish的结合
57.4  针对Linux系统设置
57.4.1  Linux优化内核
57.4.2  优化系统资源使用
57.5  使用Varnish
57.6  缓存大小的设置
57.7  VCL配置
57.8  Varnish的启动与停止
57.9  Varnish的访问日志
57.10  守护进程varnishd
57.11  Varnish提供的命令
57.12  手动清除缓存
57.12.1  基于命令行方式清除
Varnish缓存
57.12.2  基于应用程序方式清除
Varnish缓存
57.13  VCL语言
57.13.1  默认配置文件
57.13.2  操作符
57.13.3  数据结构
57.13.4  变量
57.13.5  ACL指令
57.13.6  Varnish的函数
57.13.7  子程序
57.13.8  ESI
57.14  grace模式和saint模式
57.14.1  grace模式
57.14.2  saint模式
57.14.3  grace模式和 saint模式的
局限性

前 言

  ginx服务器在互联网推波助澜的作用下脱颖而出,创下了高并发的记录,因此,在短短10年的发展中,在全世界前100万的网站中,已经有5.1%的网站使用了Nginx服务器,使得Nginx成为继Apache(70.2%)和IIS(20.5%)之后的第三大Web服务器软件,而且它的使用数量与日俱增,直逼Apache的市场。有人说,Nginx将会取代Apache的市场,我们且不关心Nginx能不能取代Apache,1996年4月以来,Apache一直是Internet上最流行的HTTP伺服器,而且在Linux系统下Apache几乎是不二的选择,而在2002年诞生的Nginx服务器在这种形式下能够崛起那绝对是个奇迹,它有两个方面能够打败Apache服务器,一是高并发,二是节省资源,即轻量级。在我们现有的应用中,基本上将Apache跑在了后台,而是同Nginx服务器代理访问了。
  使用Nginx服务器就是使用它的两大特点,一是高并发访问,二是代理,它能够快速地解析静态文件,而对于动态语言实现的动态程序则传递到后台的服务,实现了动静网页解析的分离。
  Nginx是一个自由的、开源的、高性能的HTTP服务器和反向代理,同时也是一个IMAP/POP3的代理服务器,它是由IgorSysoev于2002年开发,并且在2004年发布了第一个版本,在互联网上使用Nginx的主机近乎6.55%(13.5M)。
  Nginx之所以能够脱颖而出闻名世界,是因为它的高性能、稳定性、丰富的功能设置、简单的配置和资源消耗低。
  Nginx解决了服务器的C10K问题,它的设计不像传统的服务器使用线程处理请求,取而代之的是使用了一个更加高级的机制——事件驱动机制,而且是异步事件驱动结构。
  即使你不希望处理成千上万的并发请求,你同样能够从Nginx的高性能和低消耗内存(占用内存小)的结构中获益。Nginx的使用规模很全面:从很小的VPS到服务器集群都可以。
  Nginx强有力地用在了一些高知名度的站点,例如WordPress、Hulu、Github、Ohloh、SourceForge 和TorrentReactor。

媒体评论

本书涵盖现有流行动态语言(PHP、Python、Perl、Java、Ruby 和ASP.NET)与Nginx服务器的结合,通过在生产环境中的具体应用,详细讲述了每一种应用服务器(包括开发架构)的多种不同结合方式。另外,本书详细讲述了应用程序服务器的缓存技术,特别是对Memcached服务器的应用

Nginx服务器在互联网推波助澜的作用下脱颖而出,创下了高并发的记录,因此,在短短10年的发展中,在全世界前100万的网站中,已经有5.1%的网站使用了Nginx服务器,使得Nginx成为继Apache(70.2%)和IIS(20.5%)之后的第三大Web服务器软件,而且它的使用数量与日俱增,直逼Apache的市场。有人说,Nginx将会取代Apache的市场,我们且不关心Nginx能不能取代Apache,1996年4月以来,Apache一直是Internet上最流行的HTTP伺服器,而且在Linux系统下Apache几乎是不二的选择,而在2002年诞生的Nginx服务器在这种形式下能够崛起那*是个奇迹,它有两个方面能够打败Apache服务器,一是高并发,二是节省资源,即轻量级。在我们现有的应用中,基本上将Apache跑在了后台,而是同Nginx服务器代理访问了。

使用Nginx服务器就是使用它的两大特点,一是高并发访问,二是代理,它能够快速地解析静态文件,而对于动态语言实现的动态程序则传递到后台的服务,实现了动静网页解析的分离。

Nginx是一个自由的、开源的、高性能的HTTP服务器和反向代理,同时也是一个IMAP/POP3的代理服务器,它是由IgorSysoev于2002年开发,并且在2004年发布了第一个版本,在互联网上使用Nginx的主机近乎6.55% (13.5M)。

Nginx之所以能够脱颖而出闻名世界,是因为它的高性能、稳定性、丰富的功能设置、简单的配置和资源消耗低。

Nginx解决了服务器的C10K问题,它的设计不像传统的服务器使用线程处理请求,取而代之的是使用了一个更加高级的机制——事件驱动机制,而且是异步事件驱动结构。

即使你不希望处理成千上万的并发请求,你同样能够从Nginx的高性能和低消耗内存(占用内存小)的结构中获益。Nginx的使用规模很全面:从很小的VPS到服务器集群都可以。

Nginx强有力地用在了一些高知名度的站点,例如WordPress、Hulu、Github、Ohloh、SourceForge和 TorrentReactor。

返回顶部
顶部