网络服务器简介

介绍

网页服务器的主要作用是为网站提供网页服务.网页可以从单个HTML文件或复杂的资源组合中进行渲染。

網頁伺服器最常見的用例之一是在瀏覽器中提供網頁顯示所需的檔案。當您訪問「http://www.digitalocean.com」時,您開始輸入通過網絡啟動請求的URL。這個請求通過多層次進行,其中一個或多個將是一個網頁伺服器。這個網頁伺服器會對您的請求產生回應,在這種情況下是DigitalOcean網站,特別是主頁。理想情況下,這會發生快速且可用 24/7.

虽然任何访问DigitalOcean的主页的访问者都会体验到它作为一个单一的网页,但实际上今天大多数现代网页都是许多资源的组合。Web服务器作为后端和前端之间的中介,为HTML和CSS文件等资源提供JSON数据,所有这些都是动态生成的或静态的。

虽然Web服务器一词可以指 _software 本身或它存在的 _hardware,但本文特别指的是 Web 服务器软件。

常用案例

网页服务器通过HTTP和HTTPS协议处理互联网上的请求,也称为HTTP服务器。网页服务器与其他类型的服务器不同,因为它专注于处理这些HTTP和HTTPS请求,从应用服务器(例如Gunicorn)和其他协议(即WSGI)的服务器区分开来。

以下是由Web服务器处理的一些常见任务:

  • 服务 HTML、CSS 和 JavaScript 文件
  • 服务图像和视频
  • 处理 HTTP 错误消息
  • 处理用户请求,通常同时
  • 直接 URL 匹配和重写
  • 处理和服务动态内容
  • 压缩内容以优化数据使用和速度
  • 允许浏览器缓存您的静态内容

实际上,这里有一些涉及Web服务器的个人项目:

  • 您想创建一个网站
  • 您想创建一个连接到互联网的应用程序

此列表绝不是全面的,而 Web 服务器在其可以为最终用户提供服务的数据类型上并不严格限制,例如,服务 Web API 请求的 Web 服务器通常会用 JSON 等格式的数据响应。

一个Web服务器的目标

网页服务器面向一个对速度、可用性、可靠性等方面的观众,它们有一个共同的目的,就是在互联网上提供内容,并且为了被认为是一个可行的网页服务器解决方案,必须考虑以下方面:

  • ** Uptime**:指网络服务器在线运行的时间. 网站需要随时在线,为用户服务,所以一个高调的更新时间是目标. 这也意味着稳定和可预测性。 当用户输入URL或点击您网站的链接时,预期的页面应当每次并在任何时候加载. 唯一的例外应当是规划更新或维护的停工时间。 一个在随机时间出现buggy或崩溃的网络服务器会对用户体验产生不利影响. (_) ( )* ** 预测**:您的网页应尽快加载。 用户希望他们的请求立即得到满足,否则你可能会失去他们. 在缓慢加载的网页上,即使用户坐过第一个负载,随后的每个长负载都会以指数方式降低他们留下来或再次访问的意愿.
  • ** 货币**:指处理同时收到的多项请求。 太多人想马上访问你的网站 似乎是件好事, 但当负载时间减慢到爬行时, 您的物理或虚拟服务器只拥有如此多的资源,如RAM和CPU计算功率,网络服务器必须高效地使用这些资源. (_ ( )* 可扩展性:可扩展性是指要么通过垂直缩放使您现有的服务器更强大,要么通过水平缩放为您的设置增加更多的服务器. 随着受众的增长,你可能会达到一个需要一到两个以上小网络服务器的地步. (_) ( )* ** 设立情况**:快速启动和运行项目是项目重复的关键。 一个简单且可重复的安装过程对于您所设置的第一个网络服务器很重要,而之后的多个网络服务器在您放大时也很重要.
  • ** 文件**:网络服务器复杂。 最常见的设置会很快让你站起来,但随着时间的推移,你的需要会增长. 通常你需要的特性并不常用。 当时机成熟时,良好的文档对于为您的需要创建定制解决方案至关重要。 () ( )* ** 开发者支助**: 如果核心开发者不致力于他们自己的项目,你不应该将你的项目投入他们的项目. 其中包括长期支持其软件的计划,以及它们以错误修正和补丁形式提供的短期支持。 ( ( )* ** 社区支助**: 一个核心发展小组将处理大部分的举重工作,但一个繁荣的社区有助于填补差距。 有了开源项目,这可能意味着对实际代码基础的贡献,但是一个强大的社区也会回答你的问题,帮助你解决你的具体问题. ( (英语)

虽然网页服务器可以提供不同的解决方案,但它们提供的解决方案源于尝试解决这些问题,这些问题本身随着时间的推移随着最终用户的需求和期望而演变,这使得这个清单充满活力和不断演变。

选择一个Web服务器解决方案

目前最受欢迎的开源 Web 服务器是 Apache 和 Nginx。

Apache首先出现,并且是在一个时候建立的,当它是常见的多个网站与自己的个别配置文件在一个单一的网页服务器上所有存在的。

虽然网页服务器共享相同的目标和问题,但每个解决方案的解释和实施都会有所不同. 对这些问题的准确答案塑造了任何给定的网页服务器解决方案的身份。 Nginx 和 Apache 由于它们的普遍性而突出,但任何网页服务器解决方案都会被评论。 当选择网页服务器时,重要的是要为您的特定项目保持自己的需求。

以下是网页服务器如何尝试实现网页服务器的目标的一些关键差异:

配置文件结构

Web 服务器将其设置存储在配置文件中. 您可以通过编辑这些文件来定制 Web 服务器。

主要差距在于集中和分散。分散配置文件允许在一个文件系统层面进行细微的控制,这取决于需要在一个服务器上托管多个网站。中央配置不专注于在一个服务器上托管多个网站,而是专注于有效地服务单个网站。这些配置依赖于URI模式匹配,即 URL 匹配到文件名和其他独特标识符,而不是依赖于对应 Web 服务器的目录结构。

Apache 的.htaccess 文件可作为一个功能实现分散配置,每个设计决策都从这个焦点流向文件系统,并具有细微的控制级别 Nginx 没有相同的文件系统焦点,并且专注于 URI 模式匹配和集中配置。

竞争行为

您运行 Web 服务器的物理和虚拟服务器具有有限的资源,如 RAM 和 CPU 处理。 您的 Web 服务器如何从根本上管理其请求将对您资源的有效使用产生最大的影响。 一个单一的请求可以为每个请求产生的整个过程,或者它可以在事件驱动的基础上处理。

Apache 通过生成流程来处理请求,从而以负载时可能成为问题的速度消耗资源。

提供静态内容

除了网页外,网页服务器还会收到其他资源的请求,如图像、视频、CSS文件和JavaScript文件,因为这些项目总是相同,无论谁要求它们,这种类型的内容被称为静态内容。

Nginx由于其事件驱动的请求处理而卓越地服务静态内容,Apache也可以服务静态内容,但在大多数设置中,与Nginx相比,在负载下速度和效率并不相同。

提供动态内容

例如,在您登录到网站后,网站通常会动态地填充您的用户名在顶部导航栏中。动态内容增加了复杂性,因为它迫使 Web 服务器在接收时单独处理许多请求。

内部处理动态内容会删除一个额外的抽象层,通常需要将请求交给外部库。Apache本地实现动态内容处理,使用LAMP(Linux, Apache, MySQL, PHP)等流行的解决方案堆栈。

反向代理功能

反向代理人坐在传统的网页服务器前面,成为一个中间服务器,将HTTP请求流量路由到其背后的网页服务器。反向代理人成为引导网页服务器和互联网之间的流量的大门,并且通常是直接接口防火墙的层。

Nginx在现实世界中的重要性很大程度上取决于它的反向代理功能和效率. 许多服务器设置将多个传统的Web服务器置于 Nginx反向代理后面,使用 Nginx来决定基于负载或规则配置发送请求的Web服务器。

支持生态系统

Nginx 和 Apache 都有各自的开发团队和社区的强有力的支持。 作为最受欢迎的开源 Web 服务器,学习资源丰富。 Apache 由非营利组织 Apache 提供支持,并且将始终免费使用。 Nginx 的核心是开源,但其 Nginx Plus 产品提供的功能包括上游健康检查、会话持久性和先进监控等功能。

替代传统的 Web 服务器

如果你想要一个随时准备响应到来 HTTP 请求的服务器,那么一个 Web 服务器可以更好地完成这个任务. 当你远离专注于服务 HTTP 请求时,Web 服务器将不再是一个理想的解决方案。

此外,随着开发人员将开发资源转移到管理 Web 服务器的优先事项,解决方案如无服务器、无头 CMS 和 Jamstack 也出现了,这些解决方案不需要自托 Web 服务器,而是将 Web 服务器层抽象化为外部服务。对于不需要对 Web 服务器层进行细分或高级控制的开发人员,开发时间可以集中在其他地方。 有关更多信息,请参阅本文中的 Jamstack with headless CMS实施完整的 Jamstack 与 DigitalOcean 应用平台

结论

在这篇文章中,您已经通过了网络服务器是什么,它们是如何使用的,以及他们正在尝试解决的问题的基本原理。配备了这些知识,您将沉浸在当前的Web服务器解决方案的环境中,并将您的知识应用到找到适合您的具体需求的解决方案。

额外资源

教程: 教程:

  • How to Install Apache:设置您的第一个Apache服务器的步骤说明:此解决方案优于分散配置,用于细微控制,并将动态网页的内部处理与 PHP
  • How to Install Nginx:设置您的第一个 Nginx服务器的步骤说明。 该解决方案优于集中配置,提供静态资产,作为反向代理,并处理高同步流量
  • Apache vs Nginx:实用考虑:更深入地研究Web服务器解决方案的两个主要参与者

数字海洋产品:

Published At
Categories with 技术
comments powered by Disqus