基本 HTTP 服务器功能 其他 HTTP 服务器功能 邮件代理服务器功能 TCP/UDP 代理服务器功能
体系结构和可伸缩 |
nginx [engine x] 是一个 HTTP 和反向代理服务器, 邮件代理服务器, 和一个通用的 TCP/UDP 代理服务器, 最初由伊戈尔·西索耶夫撰写。 很长一段时间以来,它一直在运行 在许多重载的俄罗斯网站上,包括Yandex,Mail.Ru,VK和Rambler。 根据Netcraft的数据,nginx服务或代理了20.78% 2023 年 <> 月最繁忙的站点。 以下是一些成功案例:Dropbox,Netflix,Wordpress.com FastMail.FM。
源代码和文档在类似 BSD 的 2 条款许可证下分发。
商业支持可从Nginx,Inc.获得。
基本的 HTTP 服务器功能
- 提供静态和索引文件,自动索引;打开文件描述符缓存;
- 加速 使用缓存进行反向代理;负载平衡 和容错;
- 通过缓存 FastCGI、uwsgi、SCGI 和 memcached 服务器加速支持;负载平衡 和容错;
- 模块化架构。 过滤器包括 gzipping, 字节范围、分块响应、XSLT、SSI、 和图像 转换筛选器。 可以在单个页面中处理多个 SSI 包含 如果它们由代理或 FastCGI/uwsgi/SCGI 服务器处理,则并行;
- SSL 和 TLS SNI 支持;
- 支持具有加权和基于依赖关系的优先级的HTTP / 2;
- 支持 HTTP/3。
其他 HTTP 服务器功能
- 基于名称和基于 IP 的虚拟服务器;
- 保持活动状态和管道连接支持;
- 访问 日志格式,缓冲 日志写入、快速日志轮换和系统日志日志记录;
- 3xx-5xx 错误代码重定向;
- 重写模块:URI 更改 使用正则表达式;
- 执行 不同的功能取决于客户端地址;
- 基于客户端 IP 地址的访问控制,通过密码 (HTTP 基本身份验证)和结果 子请求;
- HTTP 引用器的验证;
- 放置,删除,MKCOL,复制, 和移动方法;
- FLV 和 MP4 流媒体;
- 响应速率限制;
- 限制来自一个地址的同时连接或请求的数量;
- 基于 IP 的地理位置;
- A/B 测试;
- 请求镜像;
- 嵌入式 Perl;
- NJS 脚本语言。
邮件代理服务器功能
- 用户使用外部 HTTP 身份验证服务器重定向到 IMAP 或 POP3 服务器;
- 使用外部 HTTP 身份验证服务器和连接到内部 SMTP 服务器进行用户身份验证;
- 身份验证方法:
- POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
- IMAP: 登录,身份验证登录/普通/CRAM-MD5;
- SMTP: 身份验证登录/普通/CRAM-MD5;
- SSL支持;
- 斯蒂特尔斯 和 STLS 支持。
TCP/UDP 代理服务器功能
- TCP和UDP的通用代理;
- SSL 和 TLS SNI 支持 对于TCP;
- 负载平衡 和容错;
- 基于客户端地址的访问控制;
- 根据客户端地址执行不同的功能;
- 限制来自一个地址的同时连接数;
- 访问 日志格式,缓冲 日志写入、快速日志轮换和系统日志日志记录;
- 基于 IP 的地理位置;
- A/B 测试;
- NJS 脚本语言。
体系结构和可伸缩性
- 一个主进程和多个工作进程; 工作进程在非特权用户下运行;
- 配置灵活;
- 重新配置和升级 在不中断客户端服务的情况下执行;
- 支持 kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), 事件端口 (Solaris 10), 选择并投票;
- 支持各种 kqueue 功能,包括EV_CLEAR、EV_DISABLE (暂时禁用事件)、NOTE_LOWAT、EV_EOF、可用数据数、 错误代码;
- 支持各种电子投票功能,包括 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; 索拉里斯 11 / x86;
- AIX 7.1 / Powerpc;
- 惠普-UX 11.31 / ia64;
- macOS / ppc, i386, x86_64;
- 视窗XP, 视窗服务器 2003, 视窗 7, 视窗 10.
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。