本篇文章是Cloud Computing 基础系列的一部分。参加我们的 Cloud Computing 入门认证课程,进一步提高您的技能 。
您可能已经熟悉了这一概念。还记得客户机/服务器模型吗?网络服务器只是这种模式的一个组成部分--服务器。
网络服务器的基本功能是存储和传输网站和网络应用程序。网络服务器由硬件和软件组成,它们协同工作,促进数据交换。
网站服务器的硬件组件是指存储网站文件和组件的物理或虚拟计算机。这包括从静态 HTML 文档、文本文件、图像和视频到更复杂的动态脚本等一切内容。例如,如果你访问一个主页上有视频的网站,该视频就存储在网络服务器硬件上。
网络服务器的软件组件负责控制用户如何访问服务器上存储的文件。它通过管理来自网络浏览器和其他连接到互联网的设备的请求来实现这一功能。网络服务器上安装的软件可以让你在网络浏览器中浏览网站。
让我们先来了解一下网络服务器的组成部分。
超文本传输协议(HTTP)
HTTP 使网络服务器能够向用户传送网站和网络应用程序,以便用户访问和查看互联网上的内容。
当你使用网络浏览器访问一个网站时,你的网络浏览器会向该网站的网络服务器发送一个请求。该请求以 HTTP 消息的形式发出。网络服务器接收并处理请求,从其硬件和软件组件中检索所请求的资源。
![](https://www.linode.com/wp-content/uploads/2023/09/HTTP_diagram-1064x559.png)
在上图右侧,我们可以看到网络服务器通过 HTTP 向网络浏览器发送信息。要请求访问一个网站,我们只需在浏览器的地址栏中输入 URL 即可。然后,浏览器会将 URL 映射到 IP 地址,IP 地址代表服务器的物理位置,也就是网站的存储位置。如果在这个 IP 地址上找到了服务器,网络服务器软件就会接收请求,并发送回我们要求的网站。因此,如果我们在浏览器中输入 "www.example.com",网络服务器就会返回 "www.example.com "的网站。
自助托管与托管提供商
在托管网络应用程序时,您可以选择使用托管服务提供商或在家用电脑上建立自己的服务器。个人通常会自行托管,但对于提供基本服务的组织而言,托管服务提供商能提供更多保护。
有了托管服务提供商,您就可以利用高速服务器和网络。托管服务提供商还能可靠地处理波动的电力消耗,并防止潜在的故障。但是,我们使用托管服务提供商提供基本服务的最大原因是确保私人信息不会泄漏到公共领域。
网络服务器软件
网络服务器软件是任何网站或网络应用程序的核心。它使我们能够通过互联网向用户提供网站内容。在建立网站和配置服务器时,我们需要软件来使其运行。
在软件方面,有两种解决方案在市场上占据主导地位:Apache 和NGINX 。我们将在此介绍这两种解决方案,但值得注意的是,还有其他选择,包括 IIS 和 Lighttpd,每种方案都有独特的优势和挑战。
Apache
Apache是一款广泛使用的网络服务器软件,是托管电子商务网站或论坛等动态内容的理想选择。它可以在多个平台上运行,包括 Windows、macOS 和 Linux。它大约从 1995 年开始使用,是历史最悠久、使用最广泛的网络服务器之一。
Apache 它能处理各种网络协议,包括 HTTP、HTTPS 和 FTP,并能在许多不同的操作系统上运行,包括 Windows、Linux 和 macOS。它具有高度可定制性,各种模块可添加额外功能,如支持动态内容、身份验证和缓存。它专门用于在服务器本身内部处理动态内容,不受任何服务器组件的影响。
Apache 采用的是每个进程一个连接的模式。每个进程一个连接模型是构建网络服务器的一种传统方法,其中每个客户端连接都由一个单独的进程或线程处理。该进程或线程负责管理客户端连接并处理其请求,直至连接关闭。由于Apache 采用的是这种模式,当并发连接请求数超过进程数时,服务器性能就会明显下降。
Apache Apache 还具有高度的可扩展性,其庞大的开发人员社区可创建和维护附加模块和插件,以扩展其功能。
NGINX
另一方面、 NGINX(发音为 Engine X)则针对提供图像和视频等静态内容进行了优化,因其能够处理大量客户端同时连接而广受欢迎。NGINX 因其能够改善网络内容传输而备受推崇。
NGINX 是使用异步、事件驱动模型构建的。让我们先回顾一下这些概念。
当系统需要同时处理许多请求时,我们就会使用异步模型,例如在网络服务器、网络通信和数据库管理中。通过使用异步编程模型,这些系统可以获得更好的性能和可扩展性,并降低阻塞和冻结的风险。
事件驱动模型由系统中的事件驱动,而不是按照预先确定的步骤顺序进行。
因此,采用异步和事件驱动模式可以让系统同时处理多个任务和事件,而不会阻碍其他任务的处理。
由于其架构原因,NGINX 无法处理动态内容,如 PHP。它必须将其传递给外部处理器执行。因此,NGINX 更适合用于静态内容、反向代理、负载平衡、邮件代理和 HTTP 缓存。NGINX 也推荐用于 Linux 系统。
同时使用NGINX 和Apache
NGINX 和Apache 经常一起使用。通过这种方式,我们可以充分利用每个服务器的优势,同时克服它们的局限性。
![](https://www.linode.com/wp-content/uploads/2023/09/NGINX_Apache_Diagram-1064x559.png)
集成Apache 和NGINX 的最常见方法之一是将NGINX 放在Apache 的前面,以处理所有传入的 HTTP 请求,如上图所示。 这种配置包括将所有传入 HTTP 请求引导至NGINX ,然后将动态内容请求转发至Apache ,同时自行提供静态内容请求。
通过将NGINX 放在Apache 前面,我们可以利用NGINX的异步、事件驱动模型处理大量并发连接请求的能力。这有助于减少处理请求所需的开放线程和进程数量,从而减轻Apache 的压力,否则会降低Apache的性能。
反向代理配置还具有负载平衡和提高安全性等额外优势。NGINX 可以将请求分配给多个Apache 服务器,从而平衡负载,防止任何一台服务器不堪重负。此外,NGINX 还可以充当互联网和网络服务器之间的缓冲器,为抵御攻击提供额外的保护。
参加我们的 Cloud Computing 入门认证课程,掌握在云计算领域取得成功的技能。
评论 (1)
Crystal clear blog, loved the explanation!