单个域名可能parsing为多个服务器

第一次在服务器故障这里,我事先道歉,这个领域的东西是不是真的我的实力。 任何和所有的build议非常感谢。 我完全失去了,令人难以置信的疲惫!

我从前任inheritance了一个令人难以置信的复杂系统,我试图find一种方法来解决它 – 或者我需要被告知这是不可能的。

  • 我在ServerA (某种Linux发行版)上有一个旧网站,域名为SomeDomain.com
  • 有一个新的站点坐在ServerB (Ubuntu)上,目的是让SomeDomain.com在将来服务它(它正在取代旧站点)
  • ServerA还有一个Web应用程序,目前正在由公司内的其他部门使用(可在SomeDomain.com/web-app/访问)

目标:要有SomeDomain.com和这个域名的所有扩展(子域,URL等)服务于ServerB上的新站点。 但是,URL SomeDomain.com/web-app/必须在ServerA上提供Web App。

Catch: ServerA是一个共享服务器与托pipe公司与非常限制地方的限制 – 我不能调整DNS设置(除名称服务器 – 但不能设置Alogging或任何东西,我有完全访问ServerB做我想)。 因此,web应用程序必须来自SomeDomain.com/web-app/而不是从子域或任何东西。 这些限制使得将Web应用程序从Server A迁移到Server B变得不可取,而且这个networking应用程序将在不久的将来被replace,所以现在不值得花费精力。

因此,最终我会希望1个域名大部分时间都要parsing到Server B的IP地址,但是如果URL是SomeDomain.com/web-app/ ,则应该parsing为Server A的IP。

注意:在技术上,域名不一定要parsing为一个IP地址或另一个IP地址 – 但最终URL必须保持一致

有些事情我已经尝试过了:

  • 我已经看着mod_rewrite和.htaccess尝试实现这个效果,但它看起来不会为我工作 – 但我可能做错了(在Server B ,我只是检查请求的URI是否/web-app/并尝试提供Server A上的/web-app/文件夹)
  • 我有能力修改两台服务器上的名称服务器
  • 我无法在Server A上创build一个指向Server A的子域(因为托pipe公司的服务器使用URL来确定服务器的位置)。 我想这可能是好的,因为我可以在Server B上设置Alogging以指向Server A上的Web应用程序 – 但是, Server A需要SomeDomain.com

如果有更多的信息可以给我,请告诉我。 我需要一个正确的方向,想法或解决scheme。

这里有一堆问题,使得它不像应该那样容易。

首先,我认为处理这个问题的最好方法是:

  1. 如果您无法更改服务器A上的设置,请将其保留为www.somedomain.com
  2. 将服务器B上的完全限定的域名设置为www2.somedomain.com
  3. 添加使用国防部重写或任何你喜欢将stream量从www2.somedomain.com/web-appredirect到www.somedomain.com/web-app

现在的细节。

DNS服务器将fqdnparsing为IP地址。 他们无法帮助你做任何事情(比如path)。 DNS请求甚至不包含请求path。

在共享服务器上,几乎可以肯定地使用HTTP 1.1和基于名称的虚拟主机。 换句话说,这个盒子有一个IP地址,它查看请求中的HOST头以确定要提供哪个站点。 Ergo,如果你做了一个基于IP地址的redirect,服务器A只会得到一个123.123.123.123/web-app/foo的HTTP请求,并且在该服务器上有一个gajillion站点,它不知道该怎么做。

由于您的服务器具有不同的内容(至less在一个path中),并且您不能使用基于IP地址的redirect,您将不得不使用不同的fqdn来区分它们。

由于旧网站可能已经build立了www.somedomain.com作为ServerName ,听起来你不能改变它,你唯一的select是创build一个新的服务器名称。

你也可以考虑这个选项:

在serverB上configuration您的networking服务器,作为反向代理,针对特定的位置/ web-app /,并从serverB加载其他位置的内容。

configuration非常简单直接,你会发现很多样本可用。