来自维基百科的代理服务器:
代理服务器可以驻留在用户的本地计算机上,也可以驻留在用户的计算机和Internet上的目标服务器之间的任何位置。传递未经修改的请求和响应的代理服务器通常称为网关,有时称为隧道代理。前向代理是一种面向Internet的代理,用于从广泛的来源(在大多数情况下,Internet上的任何地方)检索数据。反向代理通常是内部面向代理,用作控制和保护对专用网络上服务器的访问的前端。反向代理通常还执行负载平衡、身份验证、解密和缓存等任务.
来自HTTP: David和Brian的最终指南:
严格地说,代理连接两个或多个使用相同协议的应用程序,而网关连接两个或多个使用不同协议的用户。网关充当“协议转换器”,允许客户端与服务器完成事务,即使客户机和服务器使用不同的协议。图6-2显示了代理和网关之间的区别:
在实践中,代理和网关之间的区别是模糊的。因为浏览器和服务器实现了不同版本的HTTP,所以代理通常进行一定量的协议转换。商业代理服务器实现网关功能,以支持SSL安全协议、SOCKS防火墙、FTP访问和基于web的应用程序。
网关连接两个讲相同协议而不受第一个源修改的当事方,它连接两个讲不同协议的当事方,并通过第二个源在协议之间进行转换。在这两个来源中,网关的定义不是相互矛盾吗?
根据其官方在线文件的说法,当代理服务器是CGI服务器时,Nginx可以用作反向代理服务器。反向代理服务器是第一个源的代理服务器,它通过第二个源连接使用相同协议的两个方。Nginx使用HTTP与客户端对话,那么Nginx不也应该使用HTTP与CGI服务器对话吗?
发布于 2019-12-04 18:22:08
发布于 2021-03-02 21:49:14
与您的源声明相反,代理和网关之间的区别并不在于传入消息是否被转换;这两种类型的中介(转发代理)都可以在现实中转换传入消息。
Roy博士论文中的§5.2.3组成部分解释了关键的区别:建筑风格和基于网络的软件体系结构的设计(强调地雷):
中间组件充当客户端和服务器,以便转发可能的翻译、请求和响应。代理组件是客户端选择的中介,用于提供其他服务的接口封装、数据转换、性能增强或安全保护。网关(a.k.a.,反向代理)组件是由网络或源服务器强加的中介,用于提供其他服务的接口封装,用于数据转换、性能增强或安全执行。注意,代理和网关之间的区别在于客户端决定何时使用代理。
在Routing的第2.3节.中介机构和Julian的RFC 7230超文本传输协议(HTTP/1.1)中也对此作了解释:消息语法和路由(重点是我的):
HTTP允许使用中介体通过连接链满足请求。HTTP中间层有三种常见形式:代理、网关和隧道。在某些情况下,单个中介可以根据每个请求的性质充当源服务器、代理、网关或隧道,交换行为。… A“代理”是由客户端选择的消息转发代理,通常通过本地配置规则来接收对某种类型(S)绝对URI的请求,并试图通过接口进行转换来满足这些请求。有些翻译是最少的,例如对于"http“URI的代理请求,而其他请求可能需要转换到和从完全不同的应用程序级协议。为了安全、注释服务或共享缓存,代理通常用于通过公共中介对组织的HTTP请求进行分组。有些代理被设计为在转发消息或有效负载时将转换应用于选定的消息或负载,如5.7.2节所述。“网关”(a.k.a.(“反向代理”)是一个中介,充当出站连接的源服务器,但翻译接收到的请求并将其转发到另一个或多个服务器。网关通常用于封装遗留或不受信任的信息服务,通过“加速器”缓存提高服务器性能,并在多台计算机上启用HTTP服务的分区或负载平衡。适用于源服务器的所有HTTP要求也适用于网关的出站通信。网关使用它想要的任何协议与入站服务器进行通信,包括对本规范范围以外的HTTP的私有扩展。但是,希望与第三方HTTP服务器进行互操作的HTTP到HTTP网关应该符合网关入站连接上的用户代理要求。“隧道”在不改变消息的情况下充当两个连接之间的盲中继。一旦激活,隧道就不会被视为HTTP通信的一方,尽管隧道可能是由HTTP请求发起的。当中继连接的两端被关闭时,隧道就不再存在。隧道用于通过中间层扩展虚拟连接,例如当传输层安全性(TLS,RFC5246)用于通过共享防火墙代理建立保密通信时。
换言之:
https://serverfault.com/questions/994319
复制相似问题