Nginx教程:有哪些特点和功能?
Nginx [发音:motor x] 是一个 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由 Igor Sysoev 编写。它长期以来一直在许多负载较大的俄罗斯网站上运行,包括:Yandex、Mail.Ru、VK 和 Rambler。据 Netcraft 称,2017 年 3 月,Nginx 为 28.50% 的最繁忙网站提供服务或代理。以下是一些成功案例:Netflix、WordPress.com、FastMail.FM。
NGINX 有什么不同? NGINX 使用可扩展的事件驱动架构,而不是更传统的流程驱动架构。这需要更低的内存占用,并使内存使用比并发连接规模更可预测。
在传统的 Web 服务器架构中,每个客户端连接都作为单独的进程或线程进行处理。随着网站受欢迎程度的提高,并发连接数增加,Web服务器速度变慢,延迟对用户的响应。回答。
从技术角度来看,生成单独的进程/线程需要 CPU 切换到新任务并创建新的运行时上下文,消耗额外的内存和 CPU 时间,从而对性能产生负面影响。
NGINX 开发的目标是实现10 倍以上的性能,优化服务器资源的使用,同时还能够扩展和支持网站的动态增长。结果,NGINX 成为最流行的模块化、事件驱动、异步、单线程 Web 服务器和 Web 代理之一。
源代码和文档根据两部分的类似 BSD 的许可证分发。
Nginx, Inc. 提供商业支持。打开文件描述符缓存;
其他 HTTP 服务器功能
- 基于名称和基于 IP 的虚拟服务器;
- 保活及管道连接支持;
- 访问日志格式、缓冲日志写入、快速日志轮转和系统日志记录;
3xx-5xx错误代码重定向;- 重写模块:用正则表达式改变URI;
- 根据客户地址执行各种功能;
- 基于客户端IP地址、密码(HTTP基本认证)和子查询结果进行访问控制;
- HTTP 引用的验证
- PUT、DELETE、MKCOL、COPY 和 MOVE 方法;
- FLV 和 MP4 流媒体;
- 响应速率限制;
- 限制来自某个地址的同时连接或请求的数量;
- 基于IP的地理定位;
- A/B 测试;
- 嵌入式 Perl
- nginScript。
邮件代理服务器功能
- 使用外部 HTTP 身份验证服务器将用户重定向到 IMAP 或 POP3 服务器;
- 使用外部HTTP认证服务器进行用户认证,并将连接重定向到内部SMTP服务器;
- 认证方式:
- POP3:USER/PASS、APOP、MD AUTH/CRAMIN;
- IMAP:登录、验证登录/普通/CRAM-MD5;
- SMTP:身份验证登录/PLAIN/CRAM -MD5;
- SSL 支持;
- STARTTLS 和 STLS 支持。
TCP/UDP代理服务器功能
- TCP和UDP通用代理;
- TCP 的 SSL 和 TLS SNI 支持;
- 负载均衡和容错;
- 根据客户端地址进行访问控制;
- 根据客户端地址执行各种功能;
- 限制一个地址的同时连接数;
- 访问日志格式、缓冲日志写入、快速日志轮换和系统日志记录;
- 基于 IP 的地理定位;
- A/B 测试;
- nginScript。
架构与扩展性
- 一主多工作流程;工作进程在非特权用户下运行;
- 配置灵活;
- 在不中断客户端服务的情况下重新配置和升级可执行文件;
- 支持 kqueue (FreeBSD 4.1+)、epoll (Linux 2.6+)、/dev/poll (Solaris 7 11/99+)、事件端口 (Solaris 10)、poll 和 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 keepalive 连接需要大约
2.5M内存; - 数据复制操作保持在最低限度。
经过测试的操作系统和平台
- FreeBSD 3 — 11 / i386; FreeBSD 5 — 11 / amd64;
- Linux 2.2 — 4 / i386; Linux 2.6 — 4/amd64; Linux 3 — 4 / armv6l、armv7l、aarch64、ppc64le;
- Solaris 9 / i386、sun4u; Solaris 10 / i386、amd64、sun4v;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS/ppc、i386。
Nginx 是一款高性能的 Web 和反向代理服务器,具有许多优越的特性:
作为 Web 服务器:相比 Apache 和 Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。这使得 Nginx 特别受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接的响应,这得益于 Nginx 选择 epoll 和 kqueue 作为开发模型。
作为负载均衡服务器:Nginx内部可以直接支持Rails和PHP,也可以对外提供HTTP代理服务器服务。 Nginx是用C语言编写的,其系统资源开销和CPU使用效率都比Perlbal好很多。
作为邮件代理服务器:Nginx也是一个非常好的邮件代理服务器(开发这个产品的最初目的之一也是作为邮件代理服务器),Last.fm描述了成功且美妙的用户体验。
Nginx非常容易安装,配置文件非常精确(还可以支持Perl语法),而且服务器的bug很少:Nginx特别容易启动,几乎可以24/7运行,即使运行几个月了。无需重新启动。您还可以在不中断服务的情况下升级软件版本。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网