关于nginx
基本 HTTP 服务器功能 其他 HTTP 服务器功能 邮件代理服务器功能 TCP/UDP 代理服务器功能 架构和可扩展性 经过测试的操作系统和平台 |
nginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器, 最初由 Igor Sysoev编写. 很长一段时间以来,它一直在许多负载重的俄罗斯网站上运行,包括 Yandex, Mail.Ru, VK, and Rambler. 根据 Netcraft 的数据 2022 年 3 月,nginx 服务代理了 22.01% 最繁忙的站点. 以下是一些成功案例: Dropbox, Netflix, Wordpress.com, FastMail.FM.
源代码和文档在 2-clause BSD-like 许可证下分发.
Nginx, Inc.提供商业支持.
基本 HTTP 服务器功能
- 提供静态和 索引 文件, 自动索引; 打开文件描述符缓存;
- 带缓存的加速反向代理; 负载均衡和容错;
- 加速支持 FastCGI、 uwsgi、 SCGI和 memcached 服务器的缓存; 负载均衡和容错;
- 模块化架构。过滤器包括 gzipping、字节范围、分块响应、 XSLT、 SSI和图像转换过滤器。如果它们由代理或 FastCGI/uwsgi/SCGI 服务器处理,则可以并行处理单个页面中的多个 SSI 包含;
- SSL 和 TLS SNI 支持;
- 支持 具有加权和基于依赖的优先级 的HTTP/2 。
其他 HTTP 服务器功能
- 基于名称和基于 IP 的 虚拟服务器;
- 保持活动 和管道连接支持;
- 访问日志格式、 缓冲日志写入、 快速日志轮换和 系统日志记录;
- 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 的通用代理 ;
- 对 TCP 的SSL和 TLS SNI支持;
- 负载均衡和容错;
- 基于 客户端地址的访问控制;
- 根据 客户端地址执行不同的功能;
- 限制 来自一个地址 的同时连接数;
- 访问日志格式、 缓冲日志写入、 快速日志轮换和 系统日志记录;
- 基于IP的地理定位;
- A/B 测试;
- njs脚本语言。
架构和可扩展性
- 一个master和几个worker进程;工作进程在非特权用户下运行;
- 灵活配置;
- 在不中断客户端服务的情况下 重新配置 和升级可执行文件;
- 支持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、可用数据数量、错误代码;
- 支持EPOLLRDHUP(Linux 2.6.17+,glibc 2.8+)和EPOLLEXCLUSIVE(Linux 4.5+,glibc 2.24+)等多种epoll特性;
- 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 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.