反向使用上游/下游术语?(例如nginx)

反向使用上游/下游术语?(例如nginx),nginx,definition,Nginx,Definition,我总是想到沿着实际河流的上游和下游,那里的信息流就像水一样。因此,上游是水/数据的来源(例如HTTP请求),下游是水/数据的去向(例如为请求提供服务的底层系统) 我最近一直在研究API网关,并注意到其中一些使用了与此定义相反的定义。当时我觉得这很奇怪,对此不屑一顾。然后我发现一些API网关所基于的nginx也以与我预期相反的方式使用术语。nginx调用它向“上游服务器”发送请求的服务器,因此传入的请求可能是“下游客户端” 从概念上讲,如果将请求发送到“上游服务器”,nginx似乎会将请求推到“上

我总是想到沿着实际河流的上游和下游,那里的信息流就像水一样。因此,上游是水/数据的来源(例如HTTP请求),下游是水/数据的去向(例如为请求提供服务的底层系统)

我最近一直在研究API网关,并注意到其中一些使用了与此定义相反的定义。当时我觉得这很奇怪,对此不屑一顾。然后我发现一些API网关所基于的nginx也以与我预期相反的方式使用术语。nginx调用它向“上游服务器”发送请求的服务器,因此传入的请求可能是“下游客户端”

从概念上讲,如果将请求发送到“上游服务器”,nginx似乎会将请求推到“上坡”,这完全违反直觉。。。显然,在反向代理和API网关的土地上,重力是反向的

我见过其他讨论,讨论上游/下游表示系统之间的依赖关系,但对于位于系统之间的中间件或基础设施组件,依赖关系的概念有点松散,我发现从信息流的角度来思考更有用,因为这通常是依赖关系的来源

我对流类比的理解是根本错误的,还是这些软件组件的概念是颠倒的

在HTTP世界中,HTTP/1.0规范中引入了“上游服务器”术语:

502坏网关

服务器在充当网关或代理时接收到无效的 来自上游服务器的响应,该服务器在尝试 满足要求

后来,在以下文件中添加了正式定义:

上游/下游

上游和下游描述消息流:all 消息从上游流向下游

根据这一定义:

  • 如果您正在查看一个请求,那么客户端在上游,服务器在下游
  • 相反,如果您查看的是响应,那么客户端在下游,服务器在上游
同时,在HTTP中,大多数数据流不是用于请求,而是用于响应。所以,如果你考虑响应流,那么“上游服务器”一词听起来相当合理和合乎逻辑。在502响应代码描述中(与HTTP/1.0相同)以及其他一些地方再次使用了该术语


同样的逻辑也可以在自然语言中的“下载”和“上传”中看到。大部分数据流都是从服务器到客户端的,这就是为什么“下载”意味着从服务器加载到客户端,然后“上传”——从客户端到服务器的原因。

谢谢,这很有意义。作为一个具有集成背景的人,我必须承认,我倾向于认为方向是谁发起了通信,而不是传输的数据量。我现在可以在HTTP定义的上下文中理解这一点,但考虑到HTTP本质上是请求/响应(即两个方向),我希望他们完全避免使用这个术语,因为它并不能真正帮助理解方向!)好问题,这困扰了我很多年。