php反向代理-一篇文章了解Web服务器、应用服务器、Web容器、反向代理服务器之间的区别和联系

2023-08-28 0 3,968 百度已收录

我们知道,不同唇色的人外表差异很大,很难识别双胞胎。 有趣的是,Web服务器/Web容器/Web应用服务器/反向代理有点像四对双胞胎,它们经常一起出现在互联网上。 本文将向读者展示如何区分这四个相似的概念。

1.1. Web服务器概念及基本原理

1.1.1. Web 服务器的历史

1989年,互联网之父伯纳斯·李向他的雇主欧洲核子研究组织(CERN)提出了一个新项目,旨在通过使用超文本系统简化科学家之间的信息交换。 该项目导致 Berners-Lee 在 1990 年编制了两项提案:

1994 年,Berners-Lee 决定成立万维网联盟 (W3C),通过标准化流程来管理所涉及的许多技术(HTTP、HTML 等)的进一步发展。

这是服务器:

Web服务器的主要功能是存储、处理并向客户端传送网页。 客户端和服务器之间的通信是使用超文本传输​​协议(HTTP)完成的。 交付的页面通常是 HTML 文档,除了文本内容之外,还可能包含图像、样式表和脚本。

用户代理(通常是网络浏览器或网络爬虫)发起HTTP请求以获取服务器资源,服务器根据请求返回资源或由于某种激励而响应错误消息。 该资源通常是服务器辅助存储上的实际文件,但情况不一定如此,具体取决于 Web 服务器的实现。

其实主要功能是提供内容,但是HTTP的完整实现还包括从客户端接收内容的形式。 该功能用于提交Web表单,包括上传文件。 许多通用 Web 服务器还支持使用 ActiveServerPages (ASP)、PHP 或其他脚本语言的服务器端脚本。 这意味着 Web 服务器的行为可以在单独的文件中编写脚本,而实际的服务器软件保持不变。 一般来说,此函数用于动态(“即时”)生成 HTML 文档,而不是返回静态文档。 后者主要用于从数据库中检索或更改信息。 前者通常更快且更容易缓存,但无法提供动态内容。

Web 服务器除了为万维网提供服务外还被使用。 它们还可以嵌入复印机、路由器、网络摄像头等设备中,并且仅服务于本地网络。 然后,网络服务器可以用作监控或管理相关设备的系统的一部分。 这通常意味着客户端计算机上不需要安装任何其他软件,因为所需的只是一个网络浏览器(当今大多数操作系统都包含)。

1.1.2. Web服务器工作原理

HTTP契约基于TCP契约,是用户代理和Web服务器之间通信的应用层契约。 Web 服务器通常以一问一答的形式工作:

用户向用户代理发起资源请求,请求内容包括但不限于:指定资源唯一标记的URI、指定的动作类型(GET/POST/DELETE/PUT...)

用户代理解析用户输入的URI并从中获取目标域名,然后由DNS服务器解析。 如果URI手动指定IP地址,则不需要此步骤。

如果与服务器的会话尚未完成,则首先建立TCP连接并完成HTTP协商(确定双方都能接受的处理方式,包括合约版本、是否加密、内容格式等)。

用户代理将请求的内容封装成HTTP数据包并发送给服务器。

php反向代理-一篇文章了解Web服务器、应用服务器、Web容器、反向代理服务器之间的区别和联系

服务器收到资源请求后,按照之前协商好的方法进行解包处理。

服务器请求的资源被封装成HTTP数据包返回给用户代理。

拿出来重点看一下服务器端的工作原理

主流网络服务器

包括Apache、IIS、Nginx,市场份额如下

使用较多的有Tomcat、Jetty、WebSphere、WebLogic、Kerstrel等。

1.2. Web应用容器概念和基本原理

1.2.1. Web应用容器的由来

Web服务器的出现标志着WWW时代的到来,世界变得越来越平坦。 尝到甜头的先行者开始不满足于在互联网上获取静态资源,于是出现了动态获取资源的CGI脚本。 后来互联网的发展方向也朝着提高Web服务器动态获取资源的能力发展。 以下是具有代表性的动态技术:

技术名词 特征

CGI(CommonGatewayInterface,公共网段套接字)

作为独立进程运行,可以用C、C++、VB、Perl等多种语言开发php反向代理,灵活但效率低下,维护复杂

PHP

服务器端嵌入HTML脚本,开源,功能强大,扩展性差

联合应用程序

服务器端嵌入HTML脚本,跨平台,部署前需要编译。 主要缺点是编译JSP比较复杂,需要熟悉JAVA及相关技术

ASP

服务器端嵌入HTML脚本,开发简单,功能强大,只能在windows下运行

此后,Web服务器向企业级应用发展,快速的业务变化促使Web开发人员面临新的挑战:如何快速勾画出健壮、可靠、满足业务需求的程序并顺利部署? 解决这一挑战的有效途径是创建一个Web程序开发框架(包括解释和执行JSP、WebAPI等运行环境),解决健壮性和可靠性问题,并提供快速开发套接字。 也就是说,开发者只需要专注于业务本身的实现,如果有更高的需求,可以对框架进行定制和扩展。 该框架的另一个名称是 Web 应用程序容器。

1.2.2. Web应用容器的基本工作原理

通常,Web应用容器是以下组成系统:

注:浅黄色模块是用于实现业务程序的主要模块。

与Web服务器相比,容器增加或增强了以下模块:

容器为每个请求分配一个线程来处理,一般采用线程池的形式来高效分配CPU计算资源。

一个请求对应一个Request上下文,主要封装了用户请求的主要组成部分:URL、HTTP请求头以及根据请求头创建的Session、Cookie等对象,方便编程。

一个请求对应一个响应上下文,主要用于向用户代理返回资源。 输出流可以被写入、或重定向、或返回错误代码等。

在容器中,开发者可以设置不同的路由匹配规则,比如允许.HTM返回.HTML,或者自定义.xyz返回.HTML资源。 更灵活的配置请参考JAVAMVC或ASP.NETMVC的配置方案。

一般来说,这里的特定容器和开发语言都有自己高效的开发模型,比如JAVA的Servlet、ASP.NET的WebForm、MVC等。

这里,刚才的线程资源就会被回收。 对于线程的复用,除非服务器空闲,否则线程通常会被返回到线程池中。

可见Web容器本身就具有作为Web服务器的功能。 事实上,一般实现Web容器功能的服务器就是Web服务器。 例如,Tomcat、IIS、Jetty。

主流Web容器

php反向代理-一篇文章了解Web服务器、应用服务器、Web容器、反向代理服务器之间的区别和联系

包括Tomcat、IIS、Jetty。

使用较多的是WebSphere、WebLogic等。

1.3. Web应用服务器概念和基本原理

在Web服务器发展的同一时期,应用服务器已经存在并发展了很长一段时间。 一些公司针对Unix开发了Tuxedo(面向事务的中间件)、TopEnd、Encina等产品,这些产品都源自IMS、CICS等大型机应用管理和监控环境。 这些产品中的大多数都指定“封闭的”特定于产品的通信契约来互连胖客户端(“胖”客户端)和服务器。 20世纪90年代,这种传统的应用服务器产品开始嵌入HTTP通信功能,最初是借助网段来实现的。 不久之后,他们之间的界限开始变得模糊。

与此同时,Web服务器也越来越成熟,能够处理更高的负载,更多的并发,并且拥有更好的功能; 应用服务器开始添加越来越多的基于HTTP的通信功能。 所有这些都导致 Web 服务器和应用程序服务器之间的界限显得更加狭窄。

如今,“应用程序服务器”和“Web 服务器”之间的界限早已变得模糊。 人们也区分这两个术语并将其用作指针。

当有人说“Web服务器”时,你通常会认为它是一个以HTTP为核心、以WebUI为导向的应用程序。 当有人说“应用程序服务器”时,您可能会想到“高负载、企业功能、事务和队列、多通道通信(HTTP 和更多合约)”。 但今天,它基本上是满足这种需求的相同产品。

右图描述了典型 Web 应用服务器的配置:

从上图我们可以看到,Web应用服务器包含了Web容器,同时对外支持业务应用、安全、集成、通信、高可用等功能,大大减少了重复开发和开发的量。确保业务体系。 快速开发和部署,同时它本身也是一个Web服务器。 Web应用服务器可以选择使用各大厂商的WebLogic、WebSphere等重量级产品php反向代理,也可以使用Tomcat、jetty等Web容器加上第三方框架(spring、hibernate等)构建自己的ApplicationServer;.NETCore平台下,您可以选择IIS、Apache、Nginx和ASP.NETCore来构建。

1.4. 反向代理概念及基本原理

1.4.1. 反向代理的基本概念

反向代理是代理服务器的一种。 根据客户端的请求,从前端服务器(如Web服务器)获取资源,然后将这些资源返回给客户端。 与正向代理不同的是,正向代理作为媒介将互联网上获取的资源返回给关联的客户端,而反向代理则作为服务器端(如Web服务器)的代理,而不是客户端边。 客户端通过正向代理可以访问很多不同的资源,而反向代理是指很多客户端通过它访问不同前端服务器上的资源,而不知道这样一个前端服务器的存在,并认为所有资源都来自于这个反向代理服务器。

互联网中的请求被发送到反向代理,反向代理将请求转发到外网的服务器。

反向代理的主要功能有:

1.4.2. 反向代理的基本工作原理

php反向代理-一篇文章了解Web服务器、应用服务器、Web容器、反向代理服务器之间的区别和联系

反向代理服务器的组成和处理过程如右图所示:

一侧浅蓝色功能模块处理外部网络数据包,左侧蓝色功能模块处理外部网络数据包

常用的反向代理服务器

它们的名字您一定记得:Ngnix,IIS,Apache。

1.5. 概括

从概念上讲:Web服务器是提供WWW服务的程序; Web容器是提供给开发者的一个框架; Web应用服务器的内容更加丰富,各个厂家一般都可以遵循一定的行业标准,定制扩展功能。 ,也可以借助开源组件进行组装和构建; 反向代理服务器在企业级应用中表现突出,具有解决集中式安全、负载均衡等优点。 现在这四个概念之间的界限越来越模糊,看看这张表:

软件术语是否是 Web 服务器 Web 容器是 Web 应用程序服务器是反向代理

信息系统

是的

是的

是的

nginx

是的

是的

阿帕奇

是的

php反向代理-一篇文章了解Web服务器、应用服务器、Web容器、反向代理服务器之间的区别和联系

是的

雄猫

是的

是的

码头

是的

是的

WebSphere

是的

是的

是的

网络逻辑

是的

是的

是的

克斯特雷尔

是的

是的?

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php反向代理-一篇文章了解Web服务器、应用服务器、Web容器、反向代理服务器之间的区别和联系 https://www.wkzy.net/game/168071.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务