我们知道不同肤色的人看起来非常不同,双胞胎很难识别。有趣的是,Web 服务器/Web 容器/Web 应用程序服务器/反向代理有点像四胞胎,经常一起出现在 Web 上。本文将带读者了解如何区分这四个相似的概念。1.1。Web 服务器概念和基本原理 1.1.1.Web 服务器的历史
1989 年,互联网之父李向他的雇主 CERN 提出了一个新项目,通过使用超文本系统来简化科学家之间的信息交流。该项目导致 – Lee 在 1990 年编写了两个场景:
1994 年,-Lee 决定组建万维网联盟 (W3C),以通过标准化过程来管理所涉及的许多技术(HTTP、HTML 等)的进一步发展。
就是这个服务器:
Web 服务器的主要功能是存储、处理和交付网页给客户端。客户端和服务器之间的通信使用超文本传输协议 (HTTP) 进行。交付的页面最常见的是 HTML 文档,除了文本内容之外,还可能包含图像、样式表和脚本。
用户代理,通常是网络浏览器或网络爬虫,发出 HTTP 请求以获取服务器资源,服务器根据请求返回资源或因某种原因返回错误消息。该资源通常是服务器二级存储上的真实文件,但不一定是这种情况,具体取决于 Web 服务器的实现方式。
虽然主要功能是提供内容,但 HTTP 的完整实现还包括从客户端接收内容的方法。该功能用于提交网页表单,包括上传文件。许多通用 Web 服务器还支持使用 Pages (ASP)、PHP 或其他脚本语言的服务器端脚本。这意味着 Web 服务器的行为可以在单独的文件中编写脚本,而实际的服务器软件保持不变。通常,此函数用于动态生成 HTML 文档(“即时”),而不是返回静态文档。前者主要用于从数据库中检索或修改信息。后者通常更快更容易缓存,但不能提供动态内容。
Web 服务器不仅用于服务万维网。它们还可以嵌入到打印机、路由器、网络摄像头等设备中,并且仅服务于本地网络。然后,Web 服务器可以用作系统的一部分,用于监控或管理相关设备。这通常意味着不需要在客户端计算机上安装其他软件,因为只需要一个 Web 浏览器(目前大多数操作系统都包含该浏览器)。
1.1.2。Web 服务器的工作原理
HTTP 协议基于 TCP 协议,是一种应用层协议,用于用户代理和 Web 服务器之间的通信。Web 服务器通常以问答形式工作:
在用户代理上,用户发起一个资源请求,请求的内容包括但不限于:指定资源的唯一标识URI,指定的动作类型(GET/POST//PUT…) 用户agent解析用户输入的URI并从中获取目标域名,并提交 by DNS 。如果在 URI 中指定了 IP 地址,则不需要此步骤。如果与服务器的会话尚未建立,则先建立 TCP 连接,完成 HTTP 协商(确定双方可接受的处理方式,包括协议版本、加密、内容格式等)。用户代理将请求内容封装成 HTTP 数据包并发送给服务器。服务器接收到资源请求,按照之前协商好的方式解包处理。服务器请求的资源被封装成 HTTP 包返回给用户代理。
接下来,我们将重点介绍服务器端的工作原理。
主流网络服务器
包括,IIS,Nginx,市场占有率如下
还有更多的用途,Jetty,,,,等等。
1.2. Web应用容器的概念和基本原理 1.2.1. Web应用容器的由来
Web服务器的出现标志着万维网时代的开始,世界变得更加平坦。刚开始尝到甜头的开拓者并不满足于在网上获取静态资源,于是出现了CGI脚本动态获取资源。后来网络的发展方向是增强Web服务器动态获取资源的能力。以下是具有代表性的动态技术:
技术术语
特征
CGI ( , 通用网关接口)
它作为一个独立的进程运行,可以用多种语言开发,如C、C++、VB、Perl,灵活但效率低且维护复杂
PHP
服务端内嵌HTML脚本,开源,功能强大,扩展性差
JSP
服务端嵌入HTML脚本,跨平台,部署前需要编译。主要缺点是编写JSP比较复杂,需要熟悉JAVA及相关技术
ASP
服务端内嵌HTML脚本,开发简单,功能强大,只能在下运行
随后,Web 服务器向企业级应用发展,快速的业务变化迫使 Web 开发者面临新的挑战:如何快速编写健壮、可靠、业务兼容的程序并顺利部署?解决这一挑战的一个有效方法是创建一个Web程序开发框架(包括一个运行环境,例如解释和执行JSP、Web API),它解决了健壮性和可靠性的问题,并提供了一个快速的开发接口。也就是说,开发者只需要专注于业务本身的实现,如果有更高的要求,可以对框架进行定制和扩展。该框架的另一个名称是 Web 应用程序容器。
1.2.2。Web 应用程序容器的工作原理
一般来说,一个 Web 应用程序容器由以下系统组成:
注:浅蓝色模块是用于实现业务程序的主要模块。
容器相比web服务器,增加或增强了以下模块:
主流 Web 容器
包括,IIS,码头。
还有更多用途等等。
1.3. Web应用服务器概念及基本原理
在Web服务器发展的同一时期,应用服务器已经存在和发展了很长时间。一些公司开发了Unix(面向事务的中间件)等产品,这些产品来源于IMS和CICS等主机应用管理和监控环境。这些产品中的大多数都指定了“封闭的”特定于产品的通信协议来互连胖客户端(“胖”)和服务器。1990 年代,这些传统的应用服务器产品开始嵌入 HTTP 通信功能,最初是使用网关实现的。没过多久,他们之间的界限开始模糊。
同时,Web 服务器变得更加成熟,能够处理更高的负载、更高的并发性和更好的特性;应用服务器开始添加越来越多的基于 HTTP 的通信能力。所有这些都导致 Web 服务器和应用程序服务器之间的界限越来越窄。
目前,“应用服务器”和“Web 服务器”之间的界限已经变得模糊。但是人们也区分这两个术语并使用它们来强调。
当有人说“Web 服务器”时,您通常认为它是一个以 HTTP 为中心、面向 Web UI 的应用程序。当有人说“应用服务器”时,你可能会想到“高负载、企业特性、事务和队列、多通道通信(HTTP 和更多协议)”。但现在它基本上是提供这些需求的同一产品。
下图描述了一个典型的 Web 应用服务器的结构:
从上图可以看出,Web应用服务器包含了Web容器服务器 web服务器,并且内置了支持企业应用的事务、安全、集成、通信、高可用等功能,大大减少了重复开发量并保证业务系统的快速性。开发和部署,而它本身就是一个 Web 服务器。web应用服务器可以选择使用大厂的重量级产品和这类重量级产品,也可以使用web之类的and、jetty加第三方框架(等)自己搭建;在 .NET Core 平台下,可以选择 IIS, , ASP.NET Core 构建的 Nginx。
1.4. 1.4.1 反向代理的概念和基本原理。反向代理的基本概念
反向代理是代理服务器的一种。它根据客户端的请求从后端服务器(如Web服务器)获取资源,然后将这些资源返回给客户端。与充当中介的正向代理不同,它充当中介,将从 获得的资源返回给关联的客户端,反向代理在服务器端(例如 Web 服务器)用作代理,而不是客户端。客户端可以通过正向代理访问很多不同的资源,而反向代理是很多客户端在不知道这些后端服务器存在的情况下访问不同后端服务器上的资源,认为所有资源都来自这个反向代理服务器。
中的请求被发送到反向代理,反向代理将请求转发到内网中的服务器。
反向代理的主要功能是:
1.4.2. 反向代理的基本工作原理
反向代理服务器的组成和处理过程如下:
左侧浅黄色功能模块处理外网包,右侧灰色功能模块处理内网包。
常见的反向代理服务器
它们的名字您一定记得:Ngnix,IIS,Apache。1.5。概括
从概念上讲:Web 服务器是提供 WWW 服务的程序;Web 容器是提供给开发人员的框架;Web应用服务器的内容要丰富得多,可以由通常遵循一定行业标准并定制扩展功能的厂商制作。,也可以通过开源组件的轻量级组装来构建;反向代理服务器在企业级应用中表现突出,具有解决集中安全、负载均衡等优势。现在这四个概念的界限越来越模糊,看看这张表就知道了:
软件名词
是否是网络服务器
它是一个 Web 容器吗
网络应用服务器
可以反向代理
IIS
是的
是的
是的
Nginx
是的
是的
是的
是的
是的
是的
码头
是的
是的
是的
是的
是的
是的
是的
是的
是的
是的?