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

时间:2015-09-02 23:06:22

标签: nginx definition

我一直想到沿着实际流线的上游和下游,信息流就像水一样。因此,上游是水/数据来自的地方(例如HTTP请求),下游就是它所处的位置(例如,为请求提供服务的底层系统)。

我最近一直在关注API网关,并注意到其中一些使用了此定义的反转。当时我耸耸肩作为一个古怪的东西。然后我发现一些API网关所基于的nginx也使用了与我预期相反的术语。 nginx将它发送请求的服务器调用到"上游服务器",因此传入的请求可能是"下游客户端"。

从概念上讲,似乎nginx会推动这些请求" uphill"如果进入一个"上游服务器",这完全是反直觉的......显然,反向代理和API网关的重力是相反的!

我已经看到其他讨论谈论上游/下游代表系统之间的依赖关系,但是对于位于系统之间的中间件或基础架构组件,依赖关系的想法有点宽松,我发现在思考方面更有帮助信息流仍然存在 - 因为这通常是你的依赖的来源。

我是否从根本上错误地理解了流类比,或者这些软件组件是否会使这些概念倒退?

1 个答案:

答案 0 :(得分:43)

在HTTP世界中,"上游服务器"术语是在HTTP / 1.0规范中引入的,RFC 1945

  

502 Bad Gateway

     

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

后来在RFC 2616中添加了正式定义:

  

上游/下游

     

上游和下游描述了消息的流程:全部   消息从上游流向下游。

根据这个定义:

  • 如果您正在查看请求,则客户端位于上游,服务器位于下游;
  • 相反,如果您正在查看响应,则客户端位于下游,服务器位于上游。

同时,在HTTP中,大部分数据流不是针对请求,而是针对响应。因此,如果您考虑响应流,那么"上游服务器"这个词听起来很合理合理。该术语在502响应代码描述中再次使用(它与HTTP / 1.0相同),以及其他一些地方。

同样的逻辑也可以用术语"下载"和"上传"用自然语言。大多数数据流是从服务器到客户端,这就是为什么"下载"意味着从服务器向客户端加载某些东西,并且"上传" - 从客户端到服务器。