W3于11月份发布的数据表明,Nginx占全球33.0%的WEB服务器市场份额排名第一,Apache则占有31.6%排名第二。Nginx是一种广泛使用的开源网络服务器软件,由 Igor Sysoev 于 2002 年发起的项目,于 2004 年 10 月正式发布。它最初是为了解决 C10k 的问题而创建的,C10k 被定义为同时管理一万个连接的挑战。
Nginx介绍
Nginx 现在是F5 Networks的一部分,该公司由 F5 在 2019 年完成,以帮助他们从一家硬件公司发展为一家更加以服务为中心的公司。
初期,Nginx 仅用于 HTTP 网络服务。发展至今, Nginx 还能充当IAMP、POP3 和 SMTP的反向代理、HTTP 负载平衡器、媒体流和电子邮件代理。Nginx 早已成为处理高流量网站的首选 Web 服务器之一,因为它能够以惊人的速度处理大量连接。
Nginx的优势
Nginx可以有效地扩展为 Web 服务器和反向代理。它不允许将进程分配给特定连接,但会创建一个进程池,可以在网络内的多个连接之间轻松共享。每当发出请求时,都会为进程分配资源,从而提高资源利用率,从而轻松处理大量连接。
- 相比Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx尤其受到虚拟主机提供商的欢迎。能够支持50000个并发连接数的响应,Nginx选择了epoll作为开发模型.
- 作为负载均衡服务器,Nginx 既可以在内部直接支持Rails 和 PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比Perlbal 要好的多。
- 作为邮件代理服务器,Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
- Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)
- Bugs非常少的服务器
- Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。
- 能够在不间断服务的情况下进行软件版本的升级。
- 编写的代码库比其他替代方案更一致。
- 它提供了一种友好的配置格式,并且具有比任何其他 Web 服务器替代品更现代的设计。
- 是基于事件的,允许您处理多个连接,而不会因上下文切换而产生开销。
- Nginx使用更少的内存和资源。
- Nginx与 ruby、python、Joomla 等常用 Web 应用程序有良好的兼容性。
- 很方便将动态内容转换为静态内容。
Nginx 相比 Apache 的优势
- 仅提供了一个单一的入口点 – 在容器化环境中,可以在需要时部署或销毁容器,但让用户访问服务的单一入口点是更好的方法。Nginx 提供的解决方案更优秀,可以随意使用 Nginx 服务器,搭配使用稳定的公共 IP 地址加载平衡和路由流量。Nginx 服务器将获取用户的请求,转发到相应的容器。
- 缓存 – Nginx 服务器为静态和动态内容提供缓存,从而提高性能,将每个数据请求路由到生成它的微服务。通过实施微缓存以在短时间内缓存数据,减少后端基础架构负载,这样以来在高流量期间隔离应用程序以平稳运行,而无需二次扩展资源。
- 提供多个后端应用程序- Nginx 集群可以更有效管理各种应用程序的流量,因此受到许多云提供商的青睐。Nginx 服务器用于代理各个 HTTP 端点的传入流量,这些端点将每个请求路由到适当的服务,还允许在不停机的情况下更新规则。
- A/B 测试 – Nginx 带有 A/B 测试功能,帮助更快的推出微服务应用程序。使用 Nginx,可以轻松地将传入流量分配到多个目的地。每当部署新的微服务时,都可以拆分流量并将一部分用户路由到此应用程序,并可以监控流量并测量 KPI,以感受两个版本在处理实时流量方面的差异。
- 合并日志 – Nginx 带有标准的 HTTP 日志格式,允许在 Nginx 前端记录完整的 Web 流量,而不是为每个微服务流量创建单独的日志。使用 Nginx,可以降低创建和维护访问日志的复杂性。
- 可扩展性和容错性 – Nginx 的负载平衡、健康检查功能允许扩展后端基础设施,这样添加或删除任何微服务都不会影响用户体验。如果想部署更多的微服务,只需要通知Nginx服务器已经在负载均衡池中添加了一个新实例。如果实例发生故障,Nginx 不会将流量路由到该实例,直到它恢复。
- 零停机时间 – Nginx 能最大程度确保网络服务器的一直运行,甚至可以在不中断连接的情况下无缝更新或升级系统软件,并避免任何应用程序停机。
- 缓解 DoS 攻击 – Nginx 以处理大量传入请求或 HTTP 流量而闻名,在高流量期间确保应用程序安全,通用缓存响应,并顺利传递请求,Nginx 还可作为应用程序的减震器,还可以控制流量,以保护易受攻击的 API 和 URL 免于请求过载。这些通过应用并发限制和排队请求来实现避免服务器过载。
Nginx 相比 Apache 的缺点
- 与 Apache 相比,能得到的社区支持较少,但现在比 Apache 具有更多的案例。
- 与 Apache 相比,提供的模块和扩展稍少。
- 因为以上两点,所以很多应用程序依然将 Apache 作为首选。
总结
在大多数情况下,Nginx 的总体资源占用也比 Apache 或其他流行的 Web 服务器要小。它占用更少的存储空间,消耗更少的内存。由于这些原因,Nginx 可以帮助使用者节省资金,因为它可以在配置较低的服务器上运行良好。(这并不是说任何一个 Web 服务器都需要真正的高端硬件。但是,NGINX 往往比 Apache 做得更好,由于其较低的资源消耗,即使它在较便宜的硬件上运行,也能处理大量连接。)