vlambda博客
学习文章列表

Nginx介绍及使用场景

Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布。2011年成立同名公司以提供支持。2019年3月11日,Nginx公司被F5 Networks以6.7亿美元收购。

Nginx是免费的开源软件,根据类BSD许可证的条款发布。一大部分Web服务器使用Nginx,通常作为负载均衡器。

  • 基础的HTTP 服务特性

  • 其它的HTTP 服务特性

  • 邮件代理服务特性

  • TCP/UDP代理服务特性

  • 架构和可伸缩性

  • 已测的可运行的操作系统和平台

基础的HTTP 服务特性

  1. 支持静态和索引文件,自动索引;打开文件描述符缓存;

  2. 支持缓存加速反向代理;负载平衡和容错;

  3. 支持FastCGI,uwsgi,SCGI和memcached服务器进行缓存的加速;负载平衡和容错

  4. 模块化架构。过滤器包括gzipping(文件压缩),字节范围(断点续传),分块响应,XSLT(数据格式),SSI(服务器端文件包含)和图像转换过滤器。如果由代理服务器或FastCGI / uwsgi / SCGI服务器处理单个页面中的多个SSI包含,则可以并行处理;

  5. 支持SSL and TLS SNI 

  6. 支持HTTP / 2通过加权和基于依赖项的优先级。

其它的HTTP 服务特性

  1. 支持IP、域名作为虚拟主机的名称;

  2. 支持Keep-alive(请求超时设置) 和管道连接(一个连接做多次请求)

  3. 支持访问日志(定制日志输出格式)、日志缓冲大小配置、日志分割、syslog(日志管理)

  4. 支持3xx-5xx 错误码跳转配置

  5. 支持URL重写、重写规则支持正则表达式

  6. 支持验证请求的Refer

  7. 支持文件管理PUT DELETE MKCOL COPY MOVE;

  8. 支持FLA&MP4流媒体格

  9. 支持请求限速

  10. GeoIP模块可以屏蔽指定IP的请求

  11. 支持A/B测试

  12. 支持请求监控

  13. Embedded Perl;

  14. njs scripting language.

邮件代理服务特性

  1. 使用外部HTTP身份验证服务器将用户重定向到IMAP或POP3服务器;

  2. 使用外部HTTP身份验证服务器的用户身份验证以及到内部SMTP服务器的连接重定向;

  3. 认证方式:

  • POP3:USER / PASS,APOP,AUTH LOGIN / PLAIN / CRAM-MD5;

  • IMAP:LOGIN,AUTH LOGIN / PLAIN / CRAM-MD5;

  • SMTP:AUTH LOGIN / PLAIN / CRAM-MD5;

    4. SSL支持;

    5. STARTTLS和STLS支持。

TCP/UDP代理服务特性(功能原理同HTTP)

  1. TCP和UDP的通用代理;

  2. SSL和TLS SNI对TCP的支持;

  3. 负载平衡和容错;

  4. 访问日志格式,缓冲日志写入,快速日志循环和syslog日志记录;

  5. 基于IP的地理位置;

  6. A / B测试;

  7. njs脚本语言。

架构和可伸缩性

  1. 一个主线程和若干个工作进程,工作进程在非特权用户下运行

  2. 配置灵活

  3. 更新配置和升级可执行文件, 而不会中断客户端服务

  4. 支持 kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, and poll;

  5. 支持各种kqueue特性包括EV_CLEAR, EV_DISABLE (to temporarily disable events), NOTE_LOWAT, EV_EOF,number of available data, error codes;

  6. 支持各种epoll特性包括EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);

  7. 支持sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+), and sendfilev (Solaris 8 7/01+)

  8. 支持File AIO (FreeBSD 4.3+, Linux 2.6.22+);

  9. 支持DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);

  10. 支持Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+) support;

  11. 10000不活动的HTTP 长链接 占用2.5M内存。

  12. 数据复制操作保持最少。


已测的可运行的操作系统和平台

  1. FreeBSD 3 — 12 / i386; FreeBSD 5 — 12 / amd64; FreeBSD 11 / ppc; FreeBSD 12 / ppc64;

  2. Linux 2.2 — 4 / i386; Linux 2.6 — 5 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le;

  3. Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v; Solaris 11 / x86;

  4. AIX 7.1 / powerpc;

  5. HP-UX 11.31 / ia64;

  6. macOS / ppc, i386, x86_64;

  7. Windows XP, Windows Server 2003, Windows 7, Windows 10.


更多关于Nginx最佳实践