Code前端首页关于Code前端联系我们

Nginx教程:有哪些特点和功能?

terry 2年前 (2023-09-28) 阅读数 58 #未命名

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. 提供商业支持。打开文件描述符缓存;

  • 利用缓存加速反向代理;负载和容错;
  • 通过 FastCGI、uwsgi、SCGI 和 memcached 服务器加速支持进行缓存;负载和容错;
  • 模块化架构。过滤器包括 gzip、字节范围、分块响应、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
    • 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前端网发表,如需转载,请注明页面地址。

    热门