Одно доменное имя потенциально разрешается на несколько серверов

Впервые здесь, в Server Fault, и я заранее прошу прощения, что этот домен не является моей сильной стороной. Любые предложения высоко ценится. Я совершенно потерян и невероятно устал!

Я унаследовал невероятно запутанную систему от своего предшественника, и я пытаюсь найти способ ее решить - или мне нужно сказать, что это просто невозможно.

  • У меня есть старый сайт на ServerA (какой-то дистрибутив Linux), с доменом SomeDomain.com
  • Новый сайт сидит на ServerB (Ubuntu), с намерением иметь SomeDomain.com обслуживать его в будущем (он заменяет старый сайт)
  • ServerA также имеется веб-приложение, которое в настоящее время используется другими отделами компании (доступно по адресу SomeDomain.com/web-app/)

Цель: иметь SomeDomain.com и все расширения этого доменного имени (субдомены, URL и т. д.) обслуживают новый сайт на ServerB, НО, URL SomeDomain.com/web-app/ должен обслуживать веб-приложение на ServerA,

Поймать: ServerA это общий сервер с хостинговой компанией с ОЧЕНЬ ограничивающими ограничениями - я не могу настроить параметры DNS (кроме серверов имен - но не могу установить записи A или что-либо еще, у меня есть полный доступ к ServerB делать как я хочу). Поэтому веб-приложение ДОЛЖНО обслуживаться с SomeDomain.com/web-app/ а не из поддоменов или чего-то еще. Эти ограничения делают миграцию веб-приложения с Server A в Server B довольно нежелательно, И это веб-приложение будет заменено в ближайшем будущем, поэтому оно не стоит усилий прямо сейчас.

Поэтому в конечном итоге я хочу, чтобы одно доменное имя было разрешено Server BIP-адрес большую часть времени, но в случае, если 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, чтобы определить, какой сайт обслуживать). Я подумал, что это может быть хорошо, так как я мог бы установить рекорд на Server B указать на веб-приложение на Server A - но увы, Server A требует SomeDomain.com,

Если есть больше информации, которую я могу дать, пожалуйста, дайте мне знать. Мне нужно подтолкнуть в правильном направлении, идеи или решение.

2 ответа

Решение

Здесь есть куча проблем, которые делают это не так просто, как должно быть.

Во-первых, я думаю, что лучший способ справиться с этим:

  1. Если вы не можете изменить настройки на сервере A, оставьте его как www.somedomain.com,
  2. Установите полное доменное имя на сервере B в www2.somedomain.com,
  3. Добавьте мод перезаписи или все, что вам нравится, чтобы перенаправить трафик с www2.somedomain.com/web-app в www.somedomain.com/web-app,

Теперь о деталях.

DNS-серверы разрешают fqdn по IP-адресу. Они не могут помочь вам с чем-то ниже этого (например, путь). DNS-запросы даже не содержат пути запроса.

На общем сервере он почти наверняка использует HTTP 1.1 и виртуальные хосты на основе имен. Другими словами, у блока есть один IP-адрес, и он просматривает заголовок HOST в запросе, чтобы определить, какой сайт обслуживать. Ergo, если вы делаете перенаправление на основе IP-адреса, сервер A просто получит HTTP-запрос 123.123.123.123/web-app/fooи имея g ajillion сайтов на этом сервере, он не будет знать, что с ним делать.

Поскольку ваши серверы имеют разный контент (по крайней мере, для одного пути), и вы не можете использовать перенаправления на основе IP-адресов, вам придется использовать разные fqdn для их различения.

Поскольку старый сайт, вероятно, уже настроен с www.somedomain.com как ServerName и это звучит так, как будто вы не можете изменить его, единственный вариант - создать новое имя сервера.

Вы также можете рассмотреть эту опцию:

Настройте свой веб-сервер на сервере B так, чтобы он действовал как обратный прокси-сервер, который обращается к ServerA для определенного местоположения / веб-приложения / и загружает содержимое других местоположений с сервера B.

Конфигурация довольно проста и понятна, вы найдете много доступных образцов.

Другие вопросы по тегам