- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
10.1 高性能 Web 服务器 Nginx 介绍
Nginx 是一个高性能的 HTTP 和反向代理服务器软件,也是一台 IMAP/POP3/SMTP 代理服务器。Nginx(发音是“engine x”)由俄罗斯程序设计师 Igor Sysoev 开发(Igor 将源代码以类 BSD 许可证的形式发布),可以运行在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系统中。随着 Nginx 在很多大型网站稳定运行,其稳定、高效的特性逐渐被越来越多的用户认可。
10.1.1 Nginx 的组成与工作原理
Nginx 由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx 配置中的一个命令,用于 URL 匹配),而在这个 location 中所配置的每个命令将会启动不同的模块去完成相应的工作。
Nginx 的模块从结构上分为核心模块、基础模块和第三方模块,其中,HTTP 模块、EVENT 模块和 MAIL 模块等属于核心模块,HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块属于基本模块,而 HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx 的功能才会如此强大。
Nginx 的模块从功能上分为三类,如下所示。
- Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改 headers 信息等操作。handlers 处理器模块一般只能有一个。
- Filters(过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由 Nginx 输出。
- Proxies(代理类模块)。就是 Nginx 的 HTTP Upstream 之类的模块,这些模块主要与后端一些服务比如 fastcgi 等操作交互,实现服务代理和负载均衡等功能。
图 10-1 展示了在 Nginx 的模块下一次常规的 HTTP 请求和响应的过程。
图 10-1 Nginx 的 HTTP 模块请求和响应过程
在工作方式上,Nginx 分为单工作进程和多工作进程两种模式。在单工作进程模式下,除主进程外,还有一个单线程的工作进程;在多工作进程模式下,每个工作进程包含多个线程。Nginx 默认为单工作进程模式。
Nginx 的模块直接被编译进 Nginx,因此属于静态编译方式。在启动 Nginx 后,自动加载 Nginx 的模块,不像在 Apache 中一样,首先将模块编译为一个 so 文件,然后在配置文件中指定是否加载。在解析配置文件时,Nginx 的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。
10.1.2 Nginx 的性能优势
如今,Nginx 已经非常流行和普及了,几乎所有的大型门户网站都在使用 Nginx。Nginx 作为 HTTP 服务器的优势显而易见,它有很多其他 Web 服务器无法比拟的性能和优势:
- 作为 Web 服务器,Nginx 处理静态文件、索引文件以及自动索引效率非常高。
- 作为代理服务器,Nginx 可以实现快速、高效的反向代理,提升网站性能。
- 作为负载均衡服务器,Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持 HTTP 代理服务器,对外进行服务。同时支持简单的容错和利用算法进行负载均衡。
- 在性能方面,Nginx 是专门为性能优化而开发的,在实现上非常注重效率。它采用内核 Poll 模型,可以支持更多的并发连接,并在大并发时占用很低的内存资源。
- 在稳定性方面,Nginx 采取了分阶段资源分配技术,使得对 CPU 与内存的占用率非常低。
- 在高可用性方面,Nginx 支持热部署,启动速度迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到 7×24 小时不间断运行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论