У нас есть рабочий веб-сайт под домен x.domain.tld
. Мы хотим добавить к нему wordpress таким образом, что у нас есть x.domain.tld / blog
, но устанавливаем его на другом сервере, поэтому мы этого не делаем. трогайте что-нибудь на этом старом (но работающем) сервере.
Могу ли я запустить новый сервер, установить на нем wordpress, перенаправить apache на x.domain.tld / blog для перенаправления на новый IP-адрес сервера, ПРИ сохранении домена имя в URL-адресе для клиентов?
Мне это кажется невыполнимым. И мы неохотно переносим все старое приложение на новый сервер. Есть ли другой способ сделать это?
Спасибо за ваше help
Это совершенно правильный случай для обратного проксирования . Я связался с веб-сайтом Nginx для объяснения, потому что Nginx очень хорош в обратном проксировании, но Apache с mod_proxy
и mod_proxy_http
также будет работать отлично.
Здесь много вопросов с качественными ответами по этой теме; @HermanB связал один из них, но я предлагаю вам также поискать другие.
По сути, эта задача решается в VirtualHost с помощью всего лишь следующего:
<VirtualHost *:80>
ServerName x.domain.tld
...
ProxyPass /blog/ http://blog.domain.tld/blog/
ProxyPassReverse /blog/ http://blog.domain.tld/blog/
</VirtualHost>
Такая конфигурация может применяться в дополнение к «основному сайту», то есть все, что не указано в URI / blog /
, будет служил как раньше, как будто не было прокси-директив.
Как видно из фрагмента конфигурации, сам блог должен быть установлен на веб-сервере blog.domain.tld
, чтобы он был доступен по пути blog
. Я настоятельно рекомендую этот подход, его нельзя перебазировать (т.е. на обоих серверах должна использоваться одна и та же база URI / blog /
); таким образом вы легко сможете обойти некоторые трудноразрешимые проблемы, которые возникают из-за того, что обратные прокси-серверы обычно не перезаписывают URL-адреса в проксированных данных. И убедитесь, что ваше приложение (Wordpress) генерирует все внутренние ссылки только с использованием относительных URI.
Я думаю так же, как и вы.
Хост-часть URL-адреса определяется клиентской стороной.
Если часть URL-адресов для хоста одинакова ( x.domain.tld
и x.domain.tld
), клиент всегда будет подключаться к одному и тому же IP-адресу. обращайтесь за ними.
Это означает, что если часть хоста используется совместно между приложениями, они должны обслуживаться одним и тем же хостом и / или IP-адресом (как прокомментировал @HermanB, mod_proxy
- это метод, который первым host получает запрос от клиента и получает контент с другого хоста, а затем объединяет содержимое, как если бы оно было на первом хосте. При этом клиент всегда подключается к первому хосту.).
Напротив, мы можем позволить одному хосту обслуживать несколько хостов URL и / или IP-адресов (см. X.domain.tld
и Y.domain.tld
одним хостом) с использованием VirtualHost
.