假设您有一台 7 天 24 小时运行的机器(专用服务器),以及其他几台机器,它们是具有未使用带宽的用户计算机。假设您要托管多个网页。专用服务器如何将http流量重定向到用户机器。希望 Web 浏览器中的地址字段仍显示正确的地址,而不是 IP。 IE。我不想重定向到另一个网页,我想告诉网络浏览器它应该从不同的服务器请求相同的网页。我一直在浏览 3xx 代码,我不认为它们是为这样的事情而设计的。
它应该可以按照以下方式工作: 1.专用服务器始终在线。 2. 用户机器启动并告诉专用服务器它已在线。 (其他几台用户机器也可以做类似的事情) 3. Web 浏览器查找域名,发现它指向专用服务器。 4. Web 浏览器请求页面。 5. 专用服务器告诉浏览器向用户机器重复请求
是否可以使用某种重定向,最好告诉浏览器继续向用户计算机发送进一步的请求。用户机器几乎可以在任何时间点关闭,但假设用户机器将等待正在进行的事务完成,而不会在 get 或其他操作中间关闭服务器程序。
最佳答案
您想要的是位于 Web 服务器前面的代理服务器或负载平衡器。
网络浏览器始终会与负载均衡器通信,负载均衡器会将请求转发到多个后端服务器之一。客户端不需要重定向,因为客户端始终认为它只是与负载均衡器通信。
预计到达时间:
查看您的各种评论并重新阅读问题,我想我误解了您想要做什么。我原以为所有提供内容的机器都将位于同一网络上,但现在我发现您正在寻找更像 p2p Web 服务器设置的东西。
如果是这种情况,您可能需要使用 DNS 和 HTTP 30x 重定向。它可能看起来像这样:
您的“主”服务器将作为应用程序的入口点,并且具有众所周知的主机名,例如“www.myapp.com”。
每当新的“用户”计算机上线时,它都会向主服务器注册,并且主服务器将为该用户计算机创建或更新 DNS 条目,例如“user123.myapp.com”。
如果给定页面的请求到达主服务器,例如“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/