什么是 Web 服务器?

在本文中,我们将解释什么是 Web 服务器、Web 服务器如何工作以及它们为什么重要。

预备知识 您应该已经了解 互联网如何工作,并且 理解网页、网站、Web 服务器和搜索引擎之间的区别
目标 您将了解什么是 Web 服务器,并对其工作原理有一个大致的了解。

总结

Web 服务器 这个词可以指代硬件、软件,或者两者协同工作。

  1. 在硬件方面,Web 服务器是一台存储 Web 服务器软件和网站组成文件(例如,HTML 文档、图片、CSS 样式表和 JavaScript 文件)的计算机。Web 服务器连接到互联网,并支持与其他连接到 Web 的设备进行物理数据交换。
  2. 在软件方面,Web 服务器包含多个部分,用于控制 Web 用户如何访问托管文件。至少,这是一个HTTP 服务器。HTTP 服务器是一种理解 URL(网址)和 HTTP(您的浏览器用来查看网页的协议)的软件。可以通过其存储的网站的域名访问 HTTP 服务器,它将这些托管网站的内容发送到最终用户的设备。

最基本地说,当浏览器需要 Web 服务器上托管的文件时,浏览器会通过 HTTP 请求该文件。当请求到达正确的(硬件)Web 服务器时,(软件)HTTP 服务器会接受请求,找到请求的文档,并通过 HTTP 将其发送回浏览器。(如果服务器找不到请求的文档,它会返回一个 404 响应。)

Basic representation of a client/server connection through HTTP

要发布网站,您需要静态或动态 Web 服务器。

静态 Web 服务器(或堆栈)包括一台计算机(硬件)和一个 HTTP 服务器(软件)。我们称之为“静态”,因为它会将托管的文件按原样发送到您的浏览器。

动态 Web 服务器包括一个静态 Web 服务器以及额外的软件,最常见的是应用程序服务器数据库。我们称之为“动态”,因为它会在将内容通过 HTTP 服务器发送到您的浏览器之前,应用程序服务器会更新托管的文件。

例如,为了生成您在浏览器中看到的最终网页,应用程序服务器可能会用数据库中的内容填充 HTML 模板。MDN 或 Wikipedia 等网站有数千个网页。通常,这类网站由少数 HTML 模板和庞大的数据库组成,而不是成千上万个静态 HTML 文档。这种设置使得维护和交付内容更加容易。

深入探讨

总结一下:要获取网页,您的浏览器会向 Web 服务器发送请求,Web 服务器会在其存储空间中搜索请求的文件。找到文件后,服务器会读取它,根据需要进行处理,然后将其发送到浏览器。让我们更详细地了解这些步骤。

托管文件

首先,Web 服务器必须存储网站的文件,即所有 HTML 文档及其相关资产,包括图片、CSS 样式表、JavaScript 文件、字体和视频。

严格来说,您可以将所有这些文件托管在自己的计算机上,但将文件全部存储在专用的 Web 服务器上要方便得多,因为

  • 专用 Web 服务器通常可用性更高(正常运行)。
  • 排除停机时间和系统故障,专用 Web 服务器始终连接到互联网。
  • 专用 Web 服务器可以一直拥有相同的 IP 地址。这被称为专用 IP 地址。(并非所有 ISP 都为家庭线路提供固定的 IP 地址。)
  • 专用 Web 服务器通常由第三方维护。

鉴于所有这些原因,找到一个好的托管提供商是构建您的网站的关键部分。研究公司提供的各种服务。选择一个符合您的需求和预算的服务。(服务范围从免费到每月数千美元不等。)您可以在本文中找到更多详细信息。

获得 Web 托管服务后,您必须 将文件上传到您的 Web 服务器

通过 HTTP 进行通信

其次,Web 服务器提供对 HTTP(超文本传输协议)的支持。顾名思义,HTTP 指定了两个计算机之间如何传输超文本(链接的 Web 文档)。

协议是两台计算机之间通信的一组规则。HTTP 是一种文本、无状态协议。

文本

所有命令都是纯文本且人类可读。

无状态

服务器和客户端都不会记住先前的通信。例如,仅依靠 HTTP,服务器无法记住您输入的密码或您在未完成的交易中的进度。您需要应用程序服务器来执行此类任务。(我们将在其他文章中介绍这类技术。)

HTTP 提供了客户端和服务器如何通信的清晰规则。如果您想了解更多信息,可以阅读 HTTP 文档。目前,有几点需要牢记

  • 客户端服务器发送 HTTP 请求。服务器响应客户端的 HTTP 请求。
  • 通过 HTTP 请求文件时,客户端必须提供文件的 URL
  • Web 服务器必须回答每一个 HTTP 请求,至少附带一条错误消息。

在 Web 服务器上,HTTP 服务器负责处理和响应传入的请求。

  1. 收到请求后,HTTP 服务器会检查请求的 URL 是否与现有文件匹配。
  2. 如果匹配,Web 服务器会将文件内容发送回浏览器。如果不匹配,服务器会检查它是否应为该请求动态生成文件(请参阅 静态与动态内容)。
  3. 如果以上两种选项都不可行,Web 服务器会向浏览器返回一条错误消息,最常见的是 404 Not Found。404 错误非常普遍,以至于一些 Web 设计师花费大量时间和精力来设计 404 错误页面。 MDN 404 页面作为此类错误页面的示例

静态与动态内容

粗略地说,服务器可以提供静态或动态内容。请记住,静态意味着“按原样提供”。静态网站最容易设置,因此我们建议您将第一个网站设置为静态网站。

动态意味着服务器会处理内容,甚至从数据库中实时生成内容。这种方法提供了更大的灵活性,但技术堆栈更复杂,这使得构建网站的难度大大增加。

无法为所有可能的用例推荐一个现成的应用程序服务器作为最佳解决方案。一些应用程序服务器旨在托管和管理博客、维基或电子商务解决方案,而另一些则更通用。如果您正在构建动态网站,请花时间研究您的需求并找到最适合您需求的技术。

大多数网站开发人员不需要从头开始创建应用程序服务器,因为有大量的现成解决方案,其中许多都可以高度配置。但是,如果您确实需要创建自己的服务器,那么您可能需要使用服务器框架,利用其现有的代码和库,并仅扩展您需要的那些部分以满足您的用例。只有相对少数的开发人员需要从头开始完全开发服务器:例如,为了满足嵌入式系统上的严格资源限制。如果您想尝试构建服务器,请查看 服务器端网站编程 学习路径中的资源。

后续步骤

现在您已经熟悉了 Web 服务器,您可以