单个域名可能解析至多个服务器

单个域名可能解析至多个服务器

第一次来 Server Fault,我提前道歉,这个域名的东西不是我的强项。任何建议都非常感谢。我完全迷失了,非常累!

我从我的前任那里继承了一个极其复杂的系统,我正在努力寻找一种方法来解决它 - 否则我就需要有人告诉我这是不可能的。

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

目标:SomeDomain.com此域名的所有扩展名(子域名、URL 等)在 上为新网站提供服务ServerB。但是,URLSomeDomain.com/web-app/必须为 上的 Web 应用程序提供服务ServerA

问题:ServerA是与托管公司共享的服务器,但限制非常严格 - 我无法调整 DNS 设置(名称服务器除外 - 但无法设置 A 记录或任何其他内容,我有完全访问权限来做ServerB我想做的事情)。因此,Web 应用程序必须从SomeDomain.com/web-app/而不是从子域或任何其他内容提供服务。这些限制使得将 Web 应用程序从 迁移Server A到 变得Server B相当不可取,而且这个 Web 应用程序将在不久的将来被替换,所以现在不值得付出努力。

因此,最终我希望 1 个域名Server B在大多数情况下能够解析为 的 IP 地址,但如果 URL 是SomeDomain.com/web-app/,则应解析为Server A的 IP。

注意:从技术上讲,域名不必解析为一个或另一个 IP - 但最终 URL 必须保持一致

我尝试过的一些方法:

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

如果还有什么我可以提供的信息,请告诉我。我需要正确的方向、想法或解决方案。

答案1

这里存在一系列问题,使得事情并不像想象的那么简单。

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

  1. 如果您无法更改服务器 A 上的设置,请保留原样www.somedomain.com
  2. 将服务器 B 上的完全限定域名设置为www2.somedomain.com
  3. 添加使用 mod rewrite 或任何你喜欢的方式将流量从 重定向www2.somedomain.com/web-appwww.somedomain.com/web-app

现在来看一下细节。

DNS 服务器将 fqdn 解析为 ip 地址。它们无法帮助您处理以下任何内容(例如路径)。DNS 请求甚至不包含请求路径。

在共享服务器上,它几乎肯定使用 HTTP 1.1 和基于名称的虚拟主机。换句话说,该框有一个 IP 地址,它会查看请求中的 HOST 标头来确定要服务哪个站点。因此,如果您执行基于 IP 地址的重定向,服务器 A 将只收到一个 HTTP 请求123.123.123.123/web-app/foo,而该服务器上有无数个站点,它将不知道如何处理它。

由于您的服务器具有不同的内容(至少对于一条路径),并且您不能使用基于 IP 地址的重定向,因此您必须使用不同的 fqdn 来区分它们。

由于旧站点可能已经设置为,www.somedomain.com而且ServerName听起来您无法更改它,因此您唯一的选择是创建一个新的服务器名称。

答案2

您也可以考虑这个选项:

在服务器 B 上配置您的网络服务器,使其充当反向代理,访问服务器 A 的特定位置 /web-app/,并从服务器 B 加载其他位置的内容。

配置非常简单和直接,您会发现许多可用的示例。

相关内容