Nginx 是一款 Web 服务器,2012年荣获年度云计算开发奖,在全世界流量最高的前 1000 名网站中,超过 25% 都使用 Nginx 来处理海量的互联网请求,一度成为世界第二大 Web 服务器,落后于排名第一的 Apache 服务器。
Nginx 是什么
Nginx 与 Apache, Lighttpd, Tomcat, Jetty, IIS 一样都是 Web 服务器,都具有 Web 服务器的基本功能:基于 REST 架构风格,以 URI 或 URL 作为沟通依据,通过 HTTP 为浏览器等客户端程序提供各种网络服务。然而,由于这些 Web 服务器在设计阶段就受到许多局限,例如当时的互联网用户规模、网络带宽、产品特点等局限,并且各自的定位与发展方向都不尽相同,使得每一款 Web 服务器的特点与应用场合都很鲜明。
Tomcat 和 Jetty 面向 Java 语言,先天就是重量级的 Web 服务器,它的性能与 Nginx 没有可比性。
IIS 只能在 Windows 上运行。 Windows 作为服务器在稳定性与其他一些性能上都不如类 UNIX 操作系统,因此,在需要高性能 Web 服务器的场合下, IIS 不是一个很棒的选择。
Apache 的发展时期很长,而且是目前毫无争议的世界第一大 Web 服务器,下图是 2000年 - 2019年活跃站点的服务器使用情况
可以看到 Apache 目前仍然处于领先地位。
Apache 有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成一个重量级的、不支持高并发的 Web 服务器。在 Apache 服务器上,如果有数以百万计的兵法 HTTP 请求同时访问,就会导致服务器上小号大量内存,操作系统内核对成百上千的 Apache 进程做进程间切换也会消耗大量 CPU 资源,并导致 HTTP 请求的平均响应速度降低,这些都决定了 Apache 不可能成为高性能 Web 服务器,这也促使了 Lighttpd 和 Nginx 的出现。
Lighttpd 和 Nginx 一样,都是轻量级、高性能的 Web 服务器,欧美的业界开发者比较钟爱 Lighttpd,而国内的开发这更青睐与 Nginx,Lighttpd 使用的比较少。
为什么选择Nginx
更快
响应快体现在两个方便:
- 单次请求响应快
- 高负载情况下响应快
高扩展性
- 采用模块化设计,具有极强的扩展性
- 社区活跃,优秀的第三方模块众多
高可靠性
很多家高流量网站都在核心服务器上大规模使用 Nginx,反过来验证了其可靠性,得益于其核心框架的优秀设计。
低内存消耗
一般情况下, 10000 个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗 2.5MB 的内存,这是 Nginx 支持高并发的基础。
单机支持 10 万以上的并发连接
这个特性非常重要!随着互联网的迅猛发展和互联网用户的成倍增长,各个公司、网站都需要应对海量并发请求,一个能够在峰值期扛住 10 万兵法请求的 Server,无疑会得到大家的青睐。
热部署
master 管理进程与 worker 工作进程的分离设计,使得 Nginx 能够提供热部署功能,即可以在7 × \times × 24 小时不间断服务的前提下,升级 Nginx 的可执行文件。当然,它也支持不停止服务就更新配置项、更新日志文件等功能。
开源
- BSD 的开源许可,允许用户免费使用,也允许用户二次开发,吸引了众多开发者,社区活跃度极高。