nginx
基本 HTTP 服务器特性 其他 HTTP 服务器特性 邮件代理服务器特性 TCP/UDP 代理服务器特性 架构和可扩展性 已测试的操作系统和平台 |
nginx(“engine x”)是一款 HTTP Web 服务器、反向代理、内容缓存、负载均衡器、TCP/UDP 代理服务器和邮件代理服务器。最初由 Igor Sysoev 编写,并根据 2-clause BSD License 发布。
以其灵活性、高性能和低资源占用而闻名,nginx 是
- 世界上最受欢迎的 Web 服务器 [Netcraft];
- 始终是最受欢迎的 Docker 镜像之一 [DataDog];
- 支持多个 Kubernetes Ingress 控制器,包括 我们自己的。
企业版分发、商业支持和培训可 从 F5, Inc. 获取。
基本 HTTP 服务器特性
- 提供静态文件和索引文件、自动索引;打开文件描述符缓存;
- 带缓存的加速反向代理;负载均衡和故障容错;
- 加速支持 FastCGI、uwsgi、SCGI 和 memcached 服务器的缓存;负载均衡和故障容错;
- 模块化架构。过滤器包括GZIP 压缩、字节范围、分块响应、XSLT、SSI 和图像转换过滤器。如果由代理服务器或 FastCGI/uwsgi/SCGI 服务器处理,单个页面内的多个 SSI 包含可以并行处理;
- SSL 和 TLS SNI 支持;
- 支持带有加权和基于依赖项优先级的 HTTP/2;
- 支持 HTTP/3。
其他 HTTP 服务器特性
- 基于名称和 IP 的虚拟服务器;
- 支持Keep-alive 和管道化连接;
- 访问日志格式、缓冲日志写入、快速日志轮换和syslog 日志记录;
- 3xx-5xx 错误代码重定向;
- 重写模块:使用正则表达式更改 URI;
- 根据客户端地址执行不同的功能;
- 基于客户端 IP 地址、密码(HTTP 基本认证)和子请求结果的访问控制;
- HTTP Referer 验证;
- PUT、DELETE、MKCOL、COPY 和 MOVE 方法;
- FLV 和 MP4 流式传输;
- 响应速率限制;
- 限制来自一个地址的并发连接或请求的数量;
- 基于 IP 的地理位置;
- A/B 测试;
- 请求镜像;
- 嵌入式 Perl;
- njs 脚本语言。
邮件代理服务器特性
- 使用外部 HTTP 认证服务器将用户重定向到 IMAP 或 POP3 服务器;
- 使用外部 HTTP 认证服务器进行用户认证,并将连接重定向到内部 SMTP 服务器;
- 认证方法
- SSL 支持;
- STARTTLS 和 STLS 支持。
TCP/UDP 代理服务器特性
- TCP 和 UDP 的通用代理;
- TCP 的 SSL 和 TLS SNI 支持;
- 负载均衡和故障容错;
- 基于客户端地址的访问控制;
- 根据客户端地址执行不同的功能;
- 限制来自一个地址的并发连接数量;
- 访问日志格式、缓冲日志写入、快速日志轮换和syslog 日志记录;
- 基于 IP 的地理位置;
- A/B 测试;
- njs 脚本语言。
架构和可扩展性
- 一个主进程和多个工作进程;工作进程运行在非特权用户下;
- 灵活的配置;
- 无需中断客户端服务即可重新配置和升级可执行文件;
- 支持 kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (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+);
- 文件异步 I/O (AIO) (FreeBSD 4.3+, Linux 2.6.22+);
- DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
- 支持 Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) 和 TCP_DEFER_ACCEPT (Linux 2.4+) 特性;
- 10,000 个非活动 HTTP Keep-alive 连接大约占用 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。