gpt4 book ai didi

nginx - 上游/下游术语用反了? (例如 Nginx)

转载 作者:行者123 更新时间:2023-12-01 17:43:31 28 4
gpt4 key购买 nike

我一直沿着实际河流的路线思考上游和下游,其中信息的流动就像水一样。因此,上游是水/数据的来源(例如 HTTP 请求),下游是水/数据的去向(例如为请求提供服务的底层系统)。

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

从概念上讲,如果转到“上游服务器”,nginx 似乎会将请求“上坡”,这完全违反直觉......显然,在反向代理和 API 网关领域,重力是相反的!

我看过其他讨论,讨论上游/下游代表系统之间的依赖关系,但对于位于系统之间的中间件或基础设施组件,依赖关系的想法有点宽松,我发现从流程的角度思考更有帮助。信息仍然 - 因为这通常是你的依赖项的来源。

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

最佳答案

在 HTTP 世界中,“上游服务器”一词是在 HTTP/1.0 规范中引入的,RFC 1945 :

502 Bad Gateway

The server, while acting as a gateway or proxy, received an invalidresponse from the upstream server it accessed in attempting tofulfill the request.

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

upstream/downstream

Upstream and downstream describe the flow of a message: allmessages flow from upstream to downstream.

根据这个定义:

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

同时,在 HTTP 中,大部分数据流不是用于请求,而是用于响应。。因此,如果您考虑响应流,那么“上游服务器”术语听起来相当合理且符合逻辑。并且该术语再次用于 502 响应代码描述(与 HTTP/1.0 相同)以及其他一些地方。

同样的逻辑也可以在自然语言中的“下载”和“上传”术语中看到。大多数数据流是从服务器到客户端,这就是为什么“下载”意味着将某些内容从服务器加载到客户端,而“上传”意味着从客户端加载到服务器。

关于nginx - 上游/下游术语用反了? (例如 Nginx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364579/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com