Nginx介绍及使用场景
Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布。2011年成立同名公司以提供支持。2019年3月11日,Nginx公司被F5 Networks以6.7亿美元收购。
Nginx是免费的开源软件,根据类BSD许可证的条款发布。一大部分Web服务器使用Nginx,通常作为负载均衡器。
基础的HTTP 服务特性
其它的HTTP 服务特性
邮件代理服务特性
TCP/UDP代理服务特性
架构和可伸缩性
已测的可运行的操作系统和平台
基础的HTTP 服务特性
支持静态和索引文件,自动索引;打开文件描述符缓存;
支持缓存加速反向代理;负载平衡和容错;
支持FastCGI,uwsgi,SCGI和memcached服务器进行缓存的加速;负载平衡和容错
模块化架构。过滤器包括gzipping(文件压缩),字节范围(断点续传),分块响应,XSLT(数据格式),SSI(服务器端文件包含)和图像转换过滤器。如果由代理服务器或FastCGI / uwsgi / SCGI服务器处理单个页面中的多个SSI包含,则可以并行处理;
支持SSL and TLS SNI
支持HTTP / 2通过加权和基于依赖项的优先级。
其它的HTTP 服务特性
支持IP、域名作为虚拟主机的名称;
支持Keep-alive(请求超时设置) 和管道连接(一个连接做多次请求)
支持访问日志(定制日志输出格式)、日志缓冲大小配置、日志分割、syslog(日志管理)
支持3xx-5xx 错误码跳转配置
支持URL重写、重写规则支持正则表达式
支持验证请求的Refer
支持文件管理PUT DELETE MKCOL COPY MOVE;
支持FLA&MP4流媒体格
支持请求限速
GeoIP模块可以屏蔽指定IP的请求
支持A/B测试
支持请求监控
Embedded Perl;
njs scripting language.
邮件代理服务特性
使用外部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;
4. SSL支持;
5. STARTTLS和STLS支持。
TCP/UDP代理服务特性(功能原理同HTTP)
TCP和UDP的通用代理;
SSL和TLS SNI对TCP的支持;
负载平衡和容错;
访问日志格式,缓冲日志写入,快速日志循环和syslog日志记录;
基于IP的地理位置;
A / B测试;
njs脚本语言。
架构和可伸缩性
一个主线程和若干个工作进程,工作进程在非特权用户下运行
配置灵活
更新配置和升级可执行文件, 而不会中断客户端服务
支持 kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, and poll;
支持各种kqueue特性包括EV_CLEAR, EV_DISABLE (to temporarily disable events), NOTE_LOWAT, EV_EOF,number of available data, error codes;
支持各种epoll特性包括EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
支持sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+), and sendfilev (Solaris 8 7/01+)
支持File AIO (FreeBSD 4.3+, Linux 2.6.22+);
支持DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
支持Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+) support;
10000不活动的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;
Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v; Solaris 11 / x86;
AIX 7.1 / powerpc;
HP-UX 11.31 / ia64;
macOS / ppc, i386, x86_64;
Windows XP, Windows Server 2003, Windows 7, Windows 10.
更多关于Nginx最佳实践