什么是 Web 服务器?

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

先决条件 您应该已经了解互联网是如何运作的,并且理解网页、网站、Web 服务器和搜索引擎之间的区别.
目标 您将学习什么是 Web 服务器,并对它的工作原理有一个基本的了解。

摘要

术语Web 服务器可以指硬件或软件,或者两者共同工作。

  1. 在硬件方面,Web 服务器是一台存储 Web 服务器软件和网站组件文件(例如 HTML 文档、图像、CSS 样式表和 JavaScript 文件)的计算机。Web 服务器连接到互联网,并支持与连接到 Web 的其他设备的物理数据交换。
  2. 在软件方面,Web 服务器包括几个部分,用于控制 Web 用户如何访问托管文件。最起码,这是一个HTTP 服务器。HTTP 服务器是能够理解URL(Web 地址)和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 或维基百科这样的网站拥有数千个网页。通常,这些类型的网站仅由几个 HTML 模板和一个巨大的数据库组成,而不是数千个静态 HTML 文档。这种设置使维护和传递内容变得更容易。

更深入的探讨

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

托管文件

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

从技术上讲,您可以将所有这些文件托管在自己的计算机上,但将所有文件存储在专用 Web 服务器上要方便得多,因为

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

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

拥有 Web 托管服务后,您必须将文件上传到 Web 服务器.

通过 HTTP 通信

其次,Web 服务器提供对HTTPHypertext Transfer Protocol)的支持。顾名思义,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 服务器,您就可以