nginx
基本 HTTP 服务器功能 其他 HTTP 服务器功能 邮件代理服务器功能 TCP/UDP 代理服务器功能 架构和可扩展性 已测试操作系统和平台 |
nginx [engine x] 是一个 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由 Igor Sysoev 编写。长期以来,它一直在许多负载很重的俄罗斯网站上运行,包括 Yandex、Mail.Ru、VK 和 Rambler。根据 Netcraft 的数据,nginx 在 2024 年 2 月为 20.74% 最繁忙的网站提供服务或代理。以下是一些成功案例:Dropbox、Netflix、Wordpress.com、FastMail.FM。
源代码和文档根据 2 条款 BSD 许可证 进行分发。
可从 Nginx, Inc. 获得商业支持
基本 HTTP 服务器功能
- 提供静态和 索引 文件,自动索引;打开文件描述符缓存;
- 加速反向代理并缓存;负载均衡和容错;
- 加速支持并缓存 FastCGI、uwsgi、SCGI 和 memcached 服务器;负载均衡和容错;
- 模块化架构。过滤器包括 gzip、字节范围、分块响应、XSLT、SSI 和 图像转换 过滤器。如果由代理或 FastCGI/uwsgi/SCGI 服务器处理,则单个页面中的多个 SSI 包含项可以并行处理;
- SSL 和 TLS SNI 支持;
- 支持 HTTP/2,具有加权和基于依赖项的优先级;
- 支持 HTTP/3。
其他 HTTP 服务器功能
- 基于名称和基于 IP 的虚拟服务器;
- 保持活动和管道连接支持;
- 访问日志格式、缓冲日志写入、快速日志轮换和syslog 日志记录;
- 3xx-5xx 错误代码重定向;
- 重写模块:使用正则表达式更改 URI;
- 执行不同的函数,具体取决于客户端地址;
- 基于客户端 IP 地址、密码(HTTP 基本身份验证)和子请求的结果的访问控制;
- HTTP 引用者的验证;
- PUT、DELETE、MKCOL、COPY 和 MOVE方法;
- FLV和MP4流传输;
- 响应速率限制;
- 限制来自一个地址的连接或请求的同时数量;
- 基于 IP 的地理定位;
- A/B 测试;
- 请求镜像;
- 嵌入式Perl;
- njs脚本语言。
邮件代理服务器功能
- 使用外部 HTTP 身份验证服务器将用户重定向到IMAP或POP3服务器;
- 使用外部 HTTP 身份验证服务器进行用户身份验证,并将连接重定向到内部SMTP服务器;
- 身份验证方法
- SSL支持;
- STARTTLS 和 STLS支持。
TCP/UDP 代理服务器功能
- TCP 和 UDP 的通用代理;
- SSL和 TLS SNI对 TCP 的支持;
- 负载平衡和容错;
- 基于客户端地址的访问控制;
- 执行不同的函数,具体取决于客户端地址;
- 限制来自一个地址的连接的同时数量;
- 访问日志格式、缓冲日志写入、快速日志轮换和syslog 日志记录;
- 基于 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+);
- DIRECTIO(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。