1 Nginx 初探

felix.shao2025-02-18

1 Nginx 初探

概述

 本部分的相关内容引用了书籍 [Nginx 高性能 Web 服务器详解] 的部分内容,如需完整内容需阅读原书籍。
 轻量级 web 服务器。将 Nginx 提供的基本功能服务从大体上归纳为基本 HTTP 服务、高级 HTTP 服务和邮件服务。以下是全文中使用的一些概念介绍:

基本 HTTP 服务

 可以作为 HTTP 代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持 SSL 等。

  1. 处理静态文件,处理索引文件以及支持自动索引。PS:设置显示文件的大小,文件的最新更新时间,可以通过 web 浏览文件。
  2. 打开并自行管理文件描述符缓存。
  3. 提供反向代理服务,并且可以使用缓存加速反向代理,同事完成简单的负载均衡以及容错。
  4. 提供远程 FastCGI 服务的缓存机制,加速访问,同时完成简单的负载均衡以及容错。
  5. 使用 Nginx 的模块化特性提供过滤器功能。其中,针对包含多个 SSI 的页面,经由 FastCGI 或反向代理,SSI 过滤器可以并行处理。
  6. 支持 HTTP 下的安全套接层安全协议 SSL。

TIP

 思考:

  • 进程间传递文件描述符过程。

高级 HTTP 服务

 自定义配置,支持虚拟主机,URL 重定向,支持网络监控,支持第三方功能模块的扩展等大量使用功能。

  1. 支持基于名字和 IP 的虚拟主机设置
  2. 支持 HTTP/1.0 中的 KEEP-Alive 模式和管线(PipeLined)模型连接。
  3. 支持重新加载配置以及在线升级时,无需中断正在处理的请求。
  4. 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
  5. 提供 3xx~5xx 错误代码重定向功能。
  6. 支持重写(Rewrite)模块扩展。
  7. 支持 HTTP DAV 模块,从而为 Http WebDAV 提供 PUT、DELETE、MKCOL、COPY 以及 MOVE 方法。
  8. 支持 FLV 流和 MP4 流传输。
  9. 支持网络监控,包括基于客户端 IP 地址和 HTTP 基本认证机制的访问控制、速度限制、来自同一地址的同时连接数或请求数限制等。
  10. 支持嵌入 Perl 语言。

邮件代理服务

 支持 IMAP/POP3 代理服务功能,支持内部 SMTP 代理服务功能。
 这块不是关注重点,略。

常用功能介绍

HTTP 代理与反向代理

HTTP 代理与反向代理-传送门open in new window

负载均衡

 核心是负载均衡策略,可划分为两大类:

  • 内置策略:轮询、加权轮询、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 缓存。

参考文献

Last Updated 2/18/2025, 5:05:12 PM