Nginx从入门到精通之Nginx介绍

简介

nginx [engine x]是一个HTTP和反向代理服务器、邮件代理服务器和通用TCP/UDP代理服务器,最初由原著是Igor Sysoev(塞索耶夫),很长一段时间以来,它一直在许多负荷沉重的俄罗斯网站上运行,包括 YandexMail.RuVKRambler。根据Netcraft的数据,2022年8月最新数据显示,nginx服务或代理了21.62%最繁忙的网站。
以下是一些成功案例:DropboxNetflixWordpressFastMail.FM
国内主流包括:微博京东腾讯云dnspod白山云拼多多招商银行网易开源镜像站清华大学开源站思否稀土掘金Linux-me等等

Netcraft关于2022年8月web服务器的调查数据

网站总数(对数标度)
image
Web服务器开发人员:所有网站的市场份额
image-1662453354821
image-1662453552763
Web服务器开发人员:活动网站的市场份额
image-1662453578026
image-1662453592439
Web服务器开发人员:最繁忙的100万站点的市场份额
image-1662453622731
image-1662453640153
Web服务器开发人员:计算机市场份额
image-1662453664167
image-1662453682779
Web服务器开发人员:域名的市场份额
image-1662453701901
image-1662453710932
(图片信息均来自Netflix)

开源协议

源文件和文档根据类似BSD的2条款许可证进行分发。
Nginx股份有限公司提供商业支持。

Nginx主要功能

  • 基本HTTP服务器功能
    提供静态和索引文件,自动索引;打开文件描述符缓存;
    通过缓存加速反向代理;负载平衡和容错;
    通过缓存FastCGI、uwsgi、SCGI和memcached服务器加速支持;负载平衡和容错;
    模块化架构。过滤器包括gzip、字节范围、分块响应、XSLT、SSI和图像转换过滤器。如果由代理或FastCGI/uwsgi/SCGI服务器处理,则可以并行处理单个页面中的多个SSI包含;
    SSL和TLS SNI支持;
    支持基于加权和依赖的优先级排序的HTTP/2。
  • 其他HTTP服务器功能
    基于名称和基于IP的虚拟服务器;
    保持活动和管道连接支持;
    访问日志格式、缓冲日志写入、快速日志旋转和系统日志记录;
    3xx-5xx错误代码重定向;
    重写模块:使用正则表达式更改URI;
    根据客户端地址执行不同的功能;
    基于客户端IP地址、密码(HTTP基本身份验证)和子请求结果的访问控制;
    HTTP referer的验证;
    PUT、DELETE、MKCOL、COPY和MOVE方法;
    FLV和MP4流;
    响应速率限制;
    限制来自一个地址的同时连接或请求的数量;
    基于IP的地理定位;
    A/B测试;
    请求镜像;
    嵌入式Perl;
    njs脚本语言
  • 邮件代理服务器功能
    使用外部HTTP认证服务器将用户重定向到IMAP或POP3服务器;
    使用外部HTTP认证服务器的用户认证和到内部SMTP服务器的连接重定向;
    身份验证方法:
      POP3:USER/PASS、APOP、AUTH-LOGIN/PLAIN/CRAM-MD5;
      IMAP:登录,身份验证登录/PLAIN/CRAM-MD5;
      SMTP:AUTH-LOGIN/PLAIN/CRAM-MD5;
    SSL支持;
    STARTTLS和STL支持。
  • TCP/UDP代理服务器功能
    TCP和UDP的通用代理;
    SSL和TLS SNI支持TCP;
    负载平衡和容错;
    基于客户端地址的访问控制;
    根据客户端地址执行不同的功能;
    限制来自一个地址的同时连接的数量;
    访问日志格式、缓冲日志写入、快速日志旋转和系统日志记录;
    基于IP的地理定位;
    A/B测试;
    njs脚本语言。
  • 体系结构和可伸缩性
    一个主进程和多个工作进程;工作进程在非特权用户下运行;
    配置灵活;
    在不中断客户端服务的情况下重新配置和升级可执行文件;
    支持kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、/dev/poll(Solaris 7 11/99+)、事件端口(Solaris 10)、选择和轮询;
    支持各种kqueue功能,包括EV_CLEAR、EV_ DISABLE(临时禁用事件)、NOTE_LOWAT、EV-EOF、可用数据数量、错误代码;
    支持各种epoll功能,包括EPollHup(Linux 2.6.17+,glibc 2.8+)和EPolleExclusive(Linux 4.5+,Glubc 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+)支持;
    10000个非活动HTTP保持活动连接占用大约250万内存;
    数据复制操作保持在最低限度。

经过测试支持的操作系统和平台

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; Linux 4 — 5 / s390x;
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…

上一篇 下一篇