Nginx 简介

官方地址:http://nginx.org/en/

1、什么是 Nginx ?

Nginx (“engine x”) 是一个 HTTP Web 服务器、反向代理、内容缓存、负载均衡器、TCP/UDP 代理服务器和邮件代理服务器。最初由 Igor Sysoev 编写,并根据 2 条 BSD 许可证发布。

Nginx 以其灵活性和高性能以及低资源利用率而闻名:

  • 世界上最受欢迎的 Web 服务器 [Netcraft];
  • 一直是最受欢迎的 Docker 镜像之一 [DataDog];
  • 为 Kubernetes 的多个入口控制器 (包括我们自己的) 提供支持。

企业发行版、商业支持和培训可以从 F5,Inc. 获得。

基本 HTTP 服务器特性

  • 提供静态和索引文件,自动索引;开放文件描述符缓存;
  • 已加速 使用缓存进行反向代理; 负载均衡 和容错;
  • 通过缓存 FastCGI、uwsgi、SCGI 和 memcached 服务器加速支持;负载均衡和容错;
  • 模块化架构。过滤器包括 gziping、字节范围、分块响应、XSLT、SSI 和图像变换过滤器。如果由代理或 FastCGI/uwsgi/SCGI 服务器处理,则可以并行处理单个页面中的多个 SSI 包含。
  • SSL 和 TLS SNI 支持;
  • 支持 HTTP/2 的加权和基于依赖关系的优先级划分;
  • HTTP/3 支持。

其他 HTTP 服务器特性

  • 基于名称和基于 IP 的虚拟服务器;
  • 支持保持连接活跃和流水线连接;
  • 访问日志格式、缓冲日志写入、快速日志轮换和系统日志记录;
  • 3xx-5xx 错误代码重定向;
  • 重写模块:使用正则表达式修改 URI;
  • 根据客户端 IP 地址执行不同的功能;
  • 基于客户端 IP 地址、密码 (HTTP 基本认证) 和子请求结果的访问控制;
  • HTTP 引用的验证;
  • PUT、DELETE、MKCOL、COPY 和 MOVE 方法;
  • FLV 和 MP4 流式传输;
  • 响应速率限制;
  • 限制来自同一地址的同时连接或请求数量;
  • 基于 IP 的地理定位;
  • A/B 测试;
  • 请求镜像;
  • 嵌入式 Perl;
  • Njs 脚本语言。

邮件代理服务器特性

  • 用户使用外部 HTTP 身份验证服务器重定向到 IMAP 或 POP3 服务器;
  • 使用外部 HTTP 认证服务器进行用户认证,并将连接重定向到内部 SMTP 服务器;
  • 认证方法:
  • POP3: 用户 / PASS、APOP、AUTH LOGIN/PLAIN/CRAM-MD5;
  • IMAP:LOGIN、AUTH LOGIN/PLAIN/CRAM-MD5;
  • SMTP:AUTH LOGIN/PLAIN/CRAM-MD5;
  • SSL 支持;
  • 支持 STARTTLS 和 STLS。

TCP/UDP 代理服务器特性

  • TCP 和 UDP 的通用代理;
  • SSL 和 TLS SNI 对 TCP 的支持;
  • 负载均衡 和容错;
  • 基于客户端地址的访问控制;
  • 根据客户端 IP 地址执行不同的功能;
  • 限制来自同一地址的同时连接数量;
  • 访问日志格式、缓冲日志写入、快速日志轮换和系统日志记录;
  • 基于 IP 的地理定位;
  • A/B 测试;
  • Njs 脚本语言。

架构和可扩展性

  • 一个主进程和多个工作进程;工作进程在非特权用户下运行;
  • 灵活配置;
  • 在不中断客户端服务的情况下重新配置和升级可执行文件;
  • 支持 kqueue (FreeBSD 4.1+)、epoll (Linux 2.6+)、/dev/poll (Solaris 7 11/99+)、事件端口 (Solaris 10)、select 和 poll;
  • 支持各种 kqueue 功能,包括 EV_CLEAR、EV_DISABLE (用于临时禁用事件)、NOTE_LOWAT、EV_EOF、可用数据数量、错误代码;
  • 支持各种 epoll 功能,包括 EPOLLRDHUP (Linux 2.6.17+、glibc 2.8+) 和 EPOLLEXCLUSIVE (Linux 4.5+、glibc 2.24+);
  • Sendfile (FreeBSD 3.1+、Linux 2.2+、macOS 10.5+)、sendfile64 (Linux 2.4.21+) 和 sendfilev (Solaris 8 7/01+) 支持;
  • AIO 文件 (FreeBSD 4.3+、Linux 2.6.22+);
  • 指令 (FreeBSD 4.4+、Linux 2.4+、Solaris 2.6+、macOS);
  • 支持接受过滤器 (FreeBSD 4.1+、NetBSD 5.0+) 和 TCP_DEFER_ACCEPT (Linux 2.4+);
  • 10,000 个非活动 HTTP 保持连接占用约 2.5M 内存;
  • 数据复制操作被保持在最低限度。

经过测试的操作系统和平台

  • FreeBSD 3-12 / i386;FreeBSD 5-12 / amd64;FreeBSD 11 / ppc;FreeBSD 12 / ppc64;
  • Linux 2.2-4/i386;Linux 2.6-5/amd64;Linux 3-4/armv6l、armv7l、aarch64、ppc64le;Linux 4-5/s390x;
  • Solaris 9 / i386,sun4u;Solaris 10 / i386,amd64,sun4v;Solaris 11 / x86;
  • AIX 7.1 / powerpc;
  • HP-UX 11.31 / ia64;
  • MacOS / ppc,i386,x86_64;
  • Windows XP、Windows Server 2003、Windows 7、Windows 10、Windows 11。
作者:Jeebiz  创建时间:2025-11-04 14:39
最后编辑:Jeebiz  更新时间:2025-11-04 17:25