Одно доменное имя потенциально разрешается на несколько серверов
Впервые здесь, в 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 ответа
Здесь есть куча проблем, которые делают это не так просто, как должно быть.
Во-первых, я думаю, что лучший способ справиться с этим:
- Если вы не можете изменить настройки на сервере 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.
Конфигурация довольно проста и понятна, вы найдете много доступных образцов.