Одно доменное имя потенциально разрешается на несколько серверов
Впервые здесь, в 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 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, чтобы определить, какой сайт обслуживать). Я подумал, что это может быть хорошо, так как я мог бы установить рекорд наServer B
указать на веб-приложение наServer A
- но увы,Server A
требуетSomeDomain.com
,
Если есть больше информации, которую я могу дать, пожалуйста, дайте мне знать. Мне нужно подтолкнуть в правильном направлении, идеи или решение.
2 ответа
Здесь есть куча проблем, которые делают это не так просто, как должно быть.
Во-первых, я думаю, что лучший способ справиться с этим:
- Если вы не можете изменить настройки на сервере A, оставьте его как
www.somedomain.com
, - Установите полное доменное имя на сервере B в
www2.somedomain.com
, - Добавьте мод перезаписи или все, что вам нравится, чтобы перенаправить трафик с
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.
Конфигурация довольно проста и понятна, вы найдете много доступных образцов.