【问题标题】:Forwarding HTTP Request with Direct Server Return使用直接服务器返回转发 HTTP 请求
【发布时间】:2010-02-14 03:46:51
【问题描述】:

我的服务器分布在多个数据中心,每个数据中心都存储不同的文件。我希望用户能够通过单个域访问所有服务器上的文件,并让各个服务器将文件直接返回给用户。

下面是一个简单的例子:
1)用户浏览器请求http://www.example.com/files/file1.zip
2) 根据 example.com 的 DNS A 记录,请求到达服务器 A。
3) 服务器 A 分析请求并确定 /files/file1.zip 存储在服务器 B 上。
4) 服务器 A 将请求转发给服务器 B。
5)服务器B不经过服务器A,直接返回file1.zip给用户。

注意:步骤 4 和 5 必须对用户透明,并且不能涉及向用户发送重定向,因为这会违反单个域的要求。

根据我的研究,我想要实现的称为“直接服务器返回”,它是负载平衡的常见设置。它有时也称为半反向代理。

对于第 4 步,听起来我需要进行 MAC 地址转换,然后将请求传回网络,对于服务器网络之外的服务器,将需要隧道。

对于第 5 步,我只需要根据负载平衡设置中的真实服务器配置服务器 B。也就是说,服务器 B 应该在环回接口上拥有服务器 A 的 IP 地址,并且它不应该响应对该 IP 地址的任何 ARP 请求。

我的问题是如何真正实现第 4 步?

我发现很多硬件和软件都可以在第 4 层实现简单的负载平衡,但这些解决方案存在不足,无法处理我需要的那种自定义路由。看来我需要推出自己的解决方案。

理想情况下,我想在 Web 服务器级别进行路由/转发,即在 PHP 或 C#/ASP.net 中。但是,我愿意在 Apache 或 IIS 等较低级别,或者在更低级别(即所有事物前面的自定义代理服务)上执行此操作。

【问题讨论】:

    标签: http reverse-proxy forwarding


    【解决方案1】:

    请原谅我的无知,但为什么不设置服务器 A 以通过 NFS 或 SMB 挂载位于其他服务器上的文件,具体取决于您使用的是 unix 变体,还是使用 Windows?

    似乎您正在尝试做的事情过于复杂,这可能非常简单。此外,使用网络挂载文件将允许您在将来需要时将这些文件挂载到其他机器上。此时,您可以在服务器 A(以及服务器 x、y 和 z,它们也都从服务器 B 挂载文件)前面放置一个负载均衡器。

    当然这不能解决在返回时绕过服务器 A 的问题,从技术上讲,服务器 A 将返回文件而不是服务器 B,但如果将负载平衡器放在 A 前面,那么 A 将变为 B无论如何,从技术上讲,B 仍然会返回文件,因为负载均衡器将使用直接服务器返回(它现在是很长一段时间的标准功能)。

    如果我确实遗漏了什么,请详细说明。

    编辑:是的,我意识到这是近 3 年前发布的。哦,好吧。

    【讨论】:

      【解决方案2】:

      为什么不发送状态码为 307 临时重定向的 HTTP 响应?

      此时客户端将重新请求到正确的指定服务器。

      我知道您想要一个域,但您可以同时拥有单独的子域和一个公共域。

      例如:

      example.com 有 IP1、IP2、IP3。

      example1.example.com 有 IP1
      example2.example.com 有 IP2
      example3.example.com 有 IP3

      如果请求到达它自己无法处理的服务器,它将转发用户以向正确的特定服务器发出另一个请求。顺便说一下,HTTP 浏览器会透明地跟随这个重定向。

      【讨论】:

      • 这需要更改域。位置标头需要指定 www.example.com 以外的其他内容,例如www2.example.com,否则请求将直接返回到同一台服务器。如果您想知道为什么我不能更改域。这是因为所提供的文件是 flash swf 文件,并且大多数使用本地存储,这需要域/子域保持不变。仅供参考,我已经尝试了所有 30x 重定向,但没有一个对 flash 透明。
      猜你喜欢
      • 2022-06-16
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多