http - 将 http 流量暂时重定向到另一台服务器

标签 http redirect

假设您有一台 7 天 24 小时运行的机器(专用服务器),以及其他几台机器,它们是具有未使用带宽的用户计算机。假设您要托管多个网页。专用服务器如何将http流量重定向到用户机器。希望 Web 浏览器中的地址字段仍显示正确的地址,而不是 IP。 IE。我不想重定向到另一个网页,我想告诉网络浏览器它应该从不同的服务器请求相同的网页。我一直在浏览 3xx 代码,我不认为它们是为这样的事情而设计的。

它应该可以按照以下方式工作: 1.专用服务器始终在线。 2. 用户机器启动并告诉专用服务器它已在线。 (其他几台用户机器也可以做类似的事情) 3. Web 浏览器查找域名,发现它指向专用服务器。 4. Web 浏览器请求页面。 5. 专用服务器告诉浏览器向用户机器重复请求

是否可以使用某种重定向,最好告诉浏览器继续向用户计算机发送进一步的请求。用户机器几乎可以在任何时间点关闭,但假设用户机器将等待正在进行的事务完成,而不会在 get 或其他操作中间关闭服务器程序。

最佳答案

您想要的是位于 Web 服务器前面的代理服务器或负载平衡器。

网络浏览器始终会与负载均衡器通信,负载均衡器会将请求转发到多个后端服务器之一。客户端不需要重定向,因为客户端始终认为它只是与负载均衡器通信。

预计到达时间:

查看您的各种评论并重新阅读问题,我想我误解了您想要做什么。我原以为所有提供内容的机器都将位于同一网络上,但现在我发现您正在寻找更像 p2p Web 服务器设置的东西。

如果是这种情况,您可能需要使用 DNS 和 HTTP 30x 重定向。它可能看起来像这样:

  1. 您的“主”服务器将作为应用程序的入口点,并且具有众所周知的主机名,例如“www.myapp.com”。

  2. 每当新的“用户”计算机上线时,它都会向主服务器注册,并且主服务器将为该用户计算机创建或更新 DNS 条目,例如“user123.myapp.com”。

  3. 如果给定页面的请求到达主服务器,例如“www.myapp.com/index.htm”,它会根据为该计算机创建的任何 DNS 条目,对其中一台用户计算机进行 302 重定向 - 例如将它们重定向到“user123.myapp.com/index.htm”。

我发现这种方法存在一些问题:

首先,一旦用户被重定向到用户计算机,如果用户计算机离线,则应用程序看起来就像死了一样。您可以通过让每个页面上的所有链接专门指向“www.myapp.com”而不是使用相对链接来避免这种情况,但是每个请求都必须通过“主服务器”路由,这将相对低效。

您可以通过在用户计算机脱机时更改其 DNS 条目以指向主服务器来解决此问题,但如果没有极短的 TTL,这将无法工作。

您将遇到的另一个问题是跟踪 session 。如果没有所有用户计算机都可以访问的某种共享 session 状态服务器,您可能无法通过此设置非常有效地使用 session 。尽管 cookies 应该仍然有效。

关于http - 将 http 流量暂时重定向到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071359/

相关文章:

http - 与经典 ASP 中 ASP.NET 的 HttpContext.Current.Items 等效的是什么?

http - 为什么304状态码算作 "redirect?"

java - 设计具有不同响应参数但相同请求的 REST API

javascript - 使用 Nodejs Express 调用 fetch() 后重定向

css - 如何在源重定向时显示 CSS 背景图像?

javascript - 在等待 Promise 时切换 AngularJS View

java - Java 中的 HttpPost 不接受过长的 url

redirect - Spring MVC : Displaying of validation messages after redirect

c - 将标准输出重定向到文件并使用函数重新建立标准输出

codeigniter:登录后如何重定向到当前 Controller (常规 php 中的 php_self)