在nginx负载平衡中的响应

假设我有nginxconfiguration了3个上游,并且我请求下载一个文件。 三个上游之一将处理请求。

答案是否直接来自上游? 或者将响应来自网关(configuration上游的机器)?

如果是第一种情况,这是如何工作的? 它是否类似于TCP Handoff,但在HTTP级别?

直接从后端向客户端发送回复的设置称为DSR负载均衡。 DSR是直接服务器返回的简称。 在这样的设置中,负载平衡器通过更新在IP之下直接使用的协议层的目的地址,将每个TCP数据包简单地转发到为该连接select的后端,如果IP之下的层不是直接适合的,则可以插入额外的IP报头有效地将数据包从前端隧道传输到后端。

DSR在networking方面稍微复杂一些,但是它具有性能优势,并且可以直接在后端看到客户端IP。

我不确定nginx是否支持DSR负载均衡。 一些search暗示它不。 来自三年前的Nginx论坛主题

在nginx中,当你请求下载一个文件的时候,网关(你的nginx前端,我想象的)select一个后端来处理这个请求,然后向服务器查询这个文件是否发回给你。 这些数据通过网关传递给请求者,所以对于客户端来说,它看起来像是来自平衡器的文件,而不是你的后端。 这就是为什么Anycast DNS(或简单的循环法DNS)通常用于CDN而不是直接平衡器。