1 Nginx 初探
1 Nginx 初探
概述
本部分的相关内容引用了书籍 [Nginx 高性能 Web 服务器详解] 的部分内容,如需完整内容需阅读原书籍。
轻量级 web 服务器。将 Nginx 提供的基本功能服务从大体上归纳为基本 HTTP 服务、高级 HTTP 服务和邮件服务。以下是全文中使用的一些概念介绍:
基本 HTTP 服务
可以作为 HTTP 代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持 SSL 等。
- 处理静态文件,处理索引文件以及支持自动索引。PS:设置显示文件的大小,文件的最新更新时间,可以通过 web 浏览文件。
- 打开并自行管理文件描述符缓存。
- 提供反向代理服务,并且可以使用缓存加速反向代理,同事完成简单的负载均衡以及容错。
- 提供远程 FastCGI 服务的缓存机制,加速访问,同时完成简单的负载均衡以及容错。
- 使用 Nginx 的模块化特性提供过滤器功能。其中,针对包含多个 SSI 的页面,经由 FastCGI 或反向代理,SSI 过滤器可以并行处理。
- 支持 HTTP 下的安全套接层安全协议 SSL。
TIP
思考:
- 进程间传递文件描述符过程。
高级 HTTP 服务
自定义配置,支持虚拟主机,URL 重定向,支持网络监控,支持第三方功能模块的扩展等大量使用功能。
- 支持基于名字和 IP 的虚拟主机设置
- 支持 HTTP/1.0 中的 KEEP-Alive 模式和管线(PipeLined)模型连接。
- 支持重新加载配置以及在线升级时,无需中断正在处理的请求。
- 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
- 提供 3xx~5xx 错误代码重定向功能。
- 支持重写(Rewrite)模块扩展。
- 支持 HTTP DAV 模块,从而为 Http WebDAV 提供 PUT、DELETE、MKCOL、COPY 以及 MOVE 方法。
- 支持 FLV 流和 MP4 流传输。
- 支持网络监控,包括基于客户端 IP 地址和 HTTP 基本认证机制的访问控制、速度限制、来自同一地址的同时连接数或请求数限制等。
- 支持嵌入 Perl 语言。
邮件代理服务
支持 IMAP/POP3 代理服务功能,支持内部 SMTP 代理服务功能。
这块不是关注重点,略。
常用功能介绍
HTTP 代理与反向代理
负载均衡
核心是负载均衡策略,可划分为两大类:
- 内置策略:轮询、加权轮询、IP hash
- 拓展策略:主要通过第三方模块实现,种类比较丰富,常见的有 url hash、fair 等 各个概念明确介绍如下:
轮询:将每个前端请求按顺序(时间顺序或者排列次数)逐一分配到不同的后端节点上,对于出现问题的后端节点自动排除。
加权轮询:在基本的轮询策略上考虑各后端节点接受请求的权重,指定各后端节点被轮询到的几率。一般用于后端节点性能不均的情况。
IP hash 策略:将前端的访问 IP 进行 hash 操作,然后根据 hash 结果将请求分配给不同的后端节点。可以避免考虑前端用户的 session 在后端多个节点上共享的问题。
url hash 策略:和 ip hash 策略相近,只是改为了对前端请求的 url 进行了 hash 操作。其优点是,如果后端有缓存服务器,它能够提高缓存效率,同时也解决了session 的问题;但其缺点是,如果后端节点出现移除,它不能自动排除该节点。
fair:该模块将前端请求转发到一个最近负载最小的后台节点。
TIP
Nginx 判断负载最小逻辑?
 通过后端节点对请求的响应时间来判断负载情况。响应时间短的节点负载相对就轻。
Web 缓存
Nginx 的 Web 缓存主要有 Proxy_Cache 相关指令集和 FastCGI_Cache 相关指令集构成。其中 Proxy_Cache 主要用于在 Nginx 服务器提供反向代理服务时,对后端源服务器的返回内容进行 URL 缓存;FastCGI_Cache 主要用于对 FastCGI 的动态成都进行缓存。另外还有一款常用的第三方模块 ngx_cache_purge 也是 Nginx 服务器 Web 缓存功能中经常使用的,它主要用于清除 Nginx 服务器上指定的 URL 缓存。
参考文献
- Nginx 官网
- [Nginx 高性能 Web 服务器详解]