Nginx教程

Nginx[读音:engine x]是HTTP和反向代理服务器,邮件代理服务器,以及Igor Sysoev最初编写的通用TCP/UDP代理服务器。在很长一段时间以来,它一直在许多负载重的俄罗斯网站上运行,包括:Yandex,Mail.Ru,VK和Rambler。 根据Netcraft的说法,Nginx在2017年3月份服务或代理了28.50%的最繁忙的网站。这里有一些成功案例:Netflix,Wordpress.com,FastMail.FM。

源代码和文档按照两条BSD类许可证分发。
商业支持可从Nginx,Inc.获得。

基本的HTTP服务器功能

  • 提供静态和索引文件,自动索引; 打开文件描述符缓存;
  • 加速反向代理与缓存; 负载均衡和容错;
  • 通过缓存FastCGI,uwsgi,SCGI和memcached服务器来加速支持; 负载均衡和容错;
  • 模块化架构。 过滤器包括gzip,字节范围,分块响应,XSLT,SSI和图像变换过滤器。 如果由代理或FastCGI/uwsgi/SCGI服务器处理,则单页内的多个SSI包含可以并行处理;
  • SSL和TLS SNI支持;
  • 支持具有加权和依赖关系优先级的HTTP/2。

其他HTTP服务器功能

  • 基于名称和基于IP的虚拟服务器;
  • 保持活动和管道连接的支持;
  • 访问日志格式,缓冲日志写入,快速日志轮换和syslog日志记录;
  • 3xx-5xx错误代码重定向;
  • 重写模块:使用正则表达式更改URI;
  • 根据客户端地址执行不同的功能;
  • 根据客户端IP地址,密码(HTTP Basic认证)和子请求结果进行访问控制;
  • HTTP引用的验证
  • PUT,DELETE,MKCOL,COPY和MOVE方法;
  • FLV和MP4流媒体;
  • 响应速度限制;
  • 限制来自一个地址的同时连接或请求的数量;
  • 基于IP的地理定位;
  • A/B测试;
  • 嵌入式Perl
  • nginScript。

邮件代理服务器功能

  • 使用外部HTTP认证服务器将用户重定向到IMAP或POP3服务器;
  • 使用外部HTTP认证服务器进行用户认证,并将连接重定向到内部SMTP服务器;
  • 认证方式:
    • POP3:USER / PASS,APOP,AUTH LOGIN / PLAIN / CRAM-MD5;
    • IMAP:LOGIN,AUTH LOGIN / PLAIN / CRAM-MD5;
    • SMTP:AUTH LOGIN / PLAIN / CRAM-MD5;
  • SSL支持;
  • STARTTLS和STLS支持。

TCP/UDP代理服务器功能

  • TCP和UDP的通用代理;
  • SSL和TLS SNI支持TCP;
  • 负载均衡和容错;
  • 基于客户地址的访问控制;
  • 根据客户端地址执行不同的功能;
  • 限制来自一个地址的同时连接数;
  • 访问日志格式,缓冲日志写入,快速日志轮换和syslog日志记录;
  • 基于IP的地理定位;
  • A/B测试;
  • nginScript。

架构和可扩展性

  • 一个主和几个工作进程; 工作进程在非特权用户下运行;
  • 灵活配置;
  • 重新配置和升级可执行文件,而不会中断客户端服务;
  • 支持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 — 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;
  • Windows XP, Windows Server 2003.

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。