用于理解Web服务器,应用程序服务器,Web容器,反向代理服务器的文本

发布者:上海IT外包来源:http://www.lanmon.net点击数:997

我们知道不同肤色的人有着截然不同的外表,双胞胎的识别很困难。有趣的是,Web服务器/Web容器/Web应用程序服务器/反向代理有点像四元组,它通常一起出现在Web上。本文将向读者介绍如何区分这四个相似的概念。
用于理解Web服务器,应用程序服务器,Web容器,反向代理服务器之间的差异和连接的文本
Web服务器概念和基本原理
Web服务器历史记录
Web服务器的工作原理
Web应用程序容器概念和基本原理
Web应用程序容器的来源
Web应用程序容器的基本工作原理
Web应用服务器概念和基本原理
反向代理概念和基本原则
反向代理基本概念
反向代理基本工作原理
总结一下
Web服务器概念和基本原理
Web服务器历史记录
1989年,互联网之父伯纳斯 - 李(Berners-Lee)向其雇主CERN提出了一个新项目,旨在通过使用超文本系统来简化科学家之间的信息交流。该项目促使Berners-Lee在1990年编写了两个项目:
一个名为WorldWideWeb的浏览器。
世界上第一个Web服务器,后来称为CERN httpd,运行在NeXTSTEP上
1991年至1994年期间,通过万维网上网和交换数据的早期技术的简单性和有效性帮助将其移植到许多不同的操作系统,在科学组织和大学中使用它,然后传播到行业。
1994年,Berners-Lee决定组建万维网联盟(W3C),通过标准化流程管理所涉及的许多技术(HTTP,HTML等)的进一步开发。
这是服务器:
Web服务器的主要功能是为客户存储,处理和交付网页。客户端和服务器之间的通信使用超文本传输协议(HTTP)完成。要传递的最常见页面是HTML文档,除文本内容外,还可能包含图像,样式表和脚本。
用户代理(通常是Web浏览器或Web爬网程序)通过发起HTTP请求来获取服务器资源,服务器根据请求返回资源或由于某种原因响应错误消息。此资源通常是服务器辅助存储上的真实文件,但不一定是这种情况,具体取决于Web服务器的实现方式。虽然主要功能是提供内容,但HTTP的完整实现还包括从客户端接收内容的方式。此功能用于提交Web表单,包括上载文件。许多常见的Web服务器还支持使用Active Server Pages(ASP),PHP或其他脚本语言的服务器端脚本。这意味着Web服务器的行为可以在单独的文件中编写脚本,而实际的服务器软件保持不变。通常,此函数用于动态生成HTML文档(“即时”),而不是返回静态文档。前者主要用于从数据库中检索或修改信息。后者通常更快,更容易缓存,但不提供动态内容。
Web服务器不仅用于服务Web。它们还可以嵌入到打印机,路由器,网络摄像头等设备中,并且只能嵌入到本地网络中。然后,Web服务器可以用作用于监视或管理所讨论的设备的系统的一部分。这通常意味着不需要在客户端计算机上安装其他软件,因为只需要一个Web浏览器(现在包括大多数操作系统)。
Web服务器的工作原理
HTTP协议基于TCP协议,是用于用户代理和Web服务器进行通信的应用层协议。 Web服务器通常以问答方式工作:
1.用户在用户代理上发起资源请求,请求的内容包括但不限于:指定资源的唯一标识符IRI,指示操作类型(GET/POST/DELETE/PUT ... )
2.用户代理解析用户输入IRI并从中获取目标域名,并将其提交给DNS服务器以进行解析。如果在IRI中指定了IP地址,则不需要这样做。
3.如果尚未与服务器建立会话,请建立TCP连接并完成HTTP协商(确定双方可接受的处理方法,包括协议版本,加密,内容格式等)。
4.用户代理将请求内容封装到HTTP数据包中并将其发送到服务器。
5.服务器接收资源请求并以协商方式解包和处理它。
6.服务器请求的资源被封装到HTTP数据包中并返回给用户代理。
下一步是讨论服务器的工作原理。
TCP侦听模块
服务器侦听端口(通常默认为8080端口,用户可以设置其他端口)以与用户代理建立连接。建立连接后,来自用户代理的后续HTTP请求将不再需要进入侦听模块。
预处理
这里有三个主要的事情:1。从TCP数据包中获取HTTP请求消息。 2.根据与用户代理的协商解密,解压缩,安全处理等。 3.根据服务器本身的配置,建立会话状态等进行安全处理。UR路线
解析URL字符串和动作以确定用户代理请求的资源,并根据匹配规则(通常根据正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块。
静态资源处理模块
负责查找静态资源,例如HTML/Javascript/CSS文件/图片/图像,确定内容是字符流还是字节流,并确定相应的MIME(例如HTML)以生成MIME的字符流作为文本/html和mpeg视频文件生成MIME视频/mpeg的字节流。
动态资源处理模块
运行业务逻辑处理,动态确定返回的资源的内容和类型,处理原则的内容和类型是相同的。
后期处理
根据与用户协商的协议进行加密,压缩,安全处理等。
资源输出模块
处理后的内容和类型封装成HTTP数据包,发送TCP连接另一端的用户代理发送TCP数据包(内容是HTTP数据包)。
主流Web服务器
包括Apache,IIS,Nginx在内的市场份额如下
Tomcat,Jetty,WebSphere,WebLogic,Kerstrel等有更多用途。
Web应用程序容器概念和基本原理
Web应用程序容器的来源
Web服务器的出现标志着WWW时代的开始,世界变得更加平坦。尝试甜头的先驱者最初并不满足并且在互联网上获得了静态资源,因此CGI脚本似乎动态地获取资源。后来,网络发展的方向也朝着增强Web服务器动态获取资源的能力方向发展。以下是具有代表性的动态技术:
然后,Web服务器正在向企业级应用程序发展。快速的业务变化迫使Web开发人员面临新的挑战:如何快速编写健壮,可靠,符合业务的程序并顺利部署它们?解决这一挑战的有效方法解决方案是创建一个Web应用程序开发框架(包括操作环境,如JSP的实现解释,Web API),这个框架解决了健壮性,可靠性问题,提供了快速的开发接口。换句话说,开发人员只需要专注于实现业务本身,并且可以在需求较高时自定义和扩展框架。此框架的另一个名称是Web应用程序容器。
Web应用程序容器的基本工作原理
通常,Web应用程序容器是以下组合系统:
注意:浅蓝色模块是实现业务程序的主要模块。
容器相对于Web服务器添加或增强以下模块:
分配线程池资源
容器为每个处理请求分配一个线程。通常,线程池用于有效地计算资源。封装Request上下文
请求对应于Request上下文,其主要封装用户请求的主要组件:URL,HTTP请求头,以及基于请求头构建的Sessions,Cookies等对象,这些对象便于编程。
封装响应上下文
请求对应于Response上下文,主要用于将资源返回给用户代理。您可以在其中编写输出流,或重定向,或返回错误代码等。
URL路由
在容器中,正在运行的开发人员设置不同的路由匹配规则,例如让.HTM返回.HTML,或自定义.xyz以返回.HTML资源。更灵活的配置可以参考JAVA MVC或ASP.NET MVC的配置方案。
动态资源处理模块
通常这里的特定容器和开发语言都有自己的高效开发模型,例如JAVA Servlet,ASP.NET Web Form,MVC。
回收资源
这将立即回收线程资源。对于线程重用,除非服务器空闲,否则线程将返回到线程池。
可以看出,Web容器本身具有Web服务器的功能。实际上,通常实现Web容器功能的服务器是Web服务器。例如,Tomcat,IIS和Jetty。
主流网络容器
包括Tomcat,IIS,Jetty。
WebSphere,WebLogic等有更多用途。
Web应用服务器概念和基本原理
在Web服务器开发的同一时期,应用服务器已经存在并开发了很长时间。一些公司开发了Tuxedo(面向事务的中间件),TopEnd,Encina和其他Unix产品,它们来自主机应用程序管理和监控环境,如IMS和CICS。这些产品中的大多数都指定了一种“封闭的”特定于产品的通信协议,用于互连胖客户端(“客户端”)和服务器。在20世纪90年代,这些传统的应用服务器产品开始嵌入HTTP通信功能,它们最初是使用网关实现的。不久之后,他们之间的界线开始变得模糊。
与此同时,Web服务器变得越来越复杂,处理更高的负载,更多的并发性和更好的功能;应用服务器开始添加越来越多基于HTTP的通信功能。所有这些都导致Web服务器和应用程序服务器之间的界限变窄。
目前,“应用服务器”和“网络服务器”之间的界限变得模糊。但人们也将这两个术语区分为重点。当有人谈论“Web服务器”时,您通常会将其视为以HTTP为核心和Web UI作为指南的应用程序。当有人说“应用服务器”时,您可能会想到“高负载,企业功能,事务和队列,多通道通信(HTTP和更多协议)”。但现在这些要求基本上是相同的产品。
下图描绘了典型Web应用程序服务器的结构。:
从上图中可以看出,Web应用服务器包含Web容器,并具有支持企业应用程序,安全性,集成,通信,高可用性等的内置功能,大大减少了重复开发的数量,确保业务系统的快速发展。开发和部署,它本身就是一个Web服务器。 Web应用程序服务器可以选择使用Dachang WebLogic和WebSphere的重量级产品。您还可以使用Tomcat和jetty等Web包含器以及第三方框架(spring,hibernate等)来构建您自己的Application Server。 ; .NET Core平台可以选择IIS,Apache,Nginx和ASP.NET Core构建。
反向代理概念和基本原则
反向代理基本概念
反向代理是一种代理服务器。它根据客户端的请求从后端服务器(例如Web服务器)获取资源,然后将这些资源返回给客户端。与转发代理不同,转发代理充当将在Internet上获得的资源返回到关联客户端的媒介,而反向代理用作服务器端(例如Web服务器)而不是客户端的代理。客户端可以通过转发代理访问许多不同的资源,而反向代理是许多客户端通过它访问不同后端服务器的资源,而不知道这些后端服务器的存在,并认为所有资源都来自For this reverse proxy服务器。
Internet上的请求被发送到反向代理,反向代理将请求转发到Intranet中的服务器。
反向代理的主要作用是:
加密和SSL加速
负载均衡
缓存静态内容
压缩
减慢上传速度
安全防火墙
外部网络发布
突破互联网封锁
解决跨域问题
反向代理基本工作原理
反向代理服务器的组成和处理如下:
左黄色功能模块处理外部网络数据包,右侧灰色功能模块处理内部网络数据包。
TCP侦听模块
侦听TCP请求时,此处的请求是指消息内容是应用层协议(例如HTTP,FTP,EMAIL等)的请求。至于是否将单独生成线程以开始处理,这由服务器本身确定。最受欢迎的是一对一的消息队列,然后是异步处理,这可以大大提高代理的吞吐量和稳定性。匹配代理服务器
代理服务器根据表(存储外部网络URL和内网服务器之间的对应关系,通常需要手动设置),如果匹配则继续处理,否则根据外部网络返回错误信息协议,例如HTTP协议,返回404。
应用负载均衡策略
如果使用大规模的Internet应用程序,为了解决整个系统稳定性的单点问题,有必要根据自定义策略将消息转发到代理服务器。简单策略是散列分布或随机分布,通常可由用户配置和选择。
预处理
这里,根据协商的外部网络应用协议进行解密,安全,会话,解压缩等处理。
新生成的网络消息
这里,根据协商的内联网应用协议生成网络分组,其中可以执行加密,安全性,会话,压缩等。
转发到代理服务器
将新生成的网络数据包发送到Intranet服务器(可能是Web服务器,Ftp服务器或邮件服务器)。
接受网络消息
接受内网服务器反馈的网络报文。
预处理
这里,根据协商的外部网络应用协议处理加密,安全性,会话,压缩等。
资源输出模块
此时,生成满足外部网络应用协议要求的分组,并将其发送到外部网络连接(用户代理)的另一端。
常见的反向代理服务器
必须记住他们的名字:Ngnix,IIS,Apache。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部