2016-01-06 2 views
0

У меня есть мобильное приложение, которое опирается на сервер node.js, размещенный на виртуальной машине Microsoft Azure. В настоящее время я нахожусь в создании новой Azure VM, на которую я хотел бы получить весь API, но поскольку я уже выпустил приложение в Google Play, пользователи, которые уже загрузили приложение, будут иметь код, который направляет все вызовы API на старый VM. Я хотел бы добавить логику к серверному коду старого VM, который перенаправляет все входящие HTTP-запросы на новую виртуальную машину и возвращает клиенту ответ от новой виртуальной машины, даже если они напрямую отправляют запрос на старый сервер VM. По существу, старая ВМ будет действовать как средний человек. Кто-нибудь знает, как это сделать с помощью узла?Как перенаправить http-запросы на другой сервер в узел

+0

Был ли IP-адрес старой VM жестко закодирован в приложении? Если это было просто доменное имя, было бы просто тривиально обновлять запись A. В противном случае вы также можете использовать обратный прокси-сервер, такой как Nginx (не обязательно используя Node). – yjwong

+0

@yjwong Проблема в том, что пользователи, которые не обновили приложение, будут иметь код, указывающий на старый сервер VM, который мы пытаемся поэтапно отключить. Новые пользователи будут указывать на новый/правильный сервер. –

ответ

0

Как отметил комментарий @ yjwong, если у вас есть независимое доменное имя для обслуживания старого приложения и привязка имени хоста старой Azure VM как записи CNAME в DNS, вы можете изменить запись CNAME, чтобы связать имя хоста нового Azure VM, чтобы указать пользователям, использующим старое приложение, на новый/правильный сервер.

О записи CNAME см. Запись в Википедии https://en.wikipedia.org/wiki/CNAME_record.

В противном случае вы можете установить и использовать обратный прокси-сервер, например Nginx для перенаправления &, переписать URL-адреса, к которым обращаются старые приложения, к URL-адресам нового/правильного сервера.

Ниже приведено несколько шагов, чтобы помочь сделать это.

  1. Установите Nginx на старую Azure VM и включите модуль ngx_http_proxy_module.
  2. Настройка Nginx в качестве обратного прокси-сервера для перенаправления URL-адресов из старого приложения ACCESSING, пожалуйста, обратитесь к документу модуля ngx_http_proxy_modulehttp://nginx.org/en/docs/http/ngx_http_proxy_module.html или поиск некоторых соответствующим статьям с ключевыми словами nginx, reverse proxy, redirect и т.д.
  3. Остановите nodejs на старой Azure VM и настроить порт Nginx в качестве порта nodejs для обслуживания старого приложения.
  4. Перезапустите nginx и проверьте старое приложение для перенаправления.

Обратите внимание, что на шаге 2 выше, пожалуйста, убедитесь, что два Azure VM (старый & новый) на том же Лазурном VNET и использовать статический частный IP-адрес (внутренний) для новой Azure VM, потому что один Azure VM не может иметь прямого доступа к общедоступному адресу другой Azure VM. Поэтому вам нужно настроить удаленный адрес нового/правильного сервера, используя частный IP-адрес в обратном прокси.

Вы можете обратиться к этим документам ниже, чтобы настроить Azure Virtual Network для двух лазурных виртуальных машин.

  1. Создать виртуальную сеть на Лазурном новый портал: https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-create-vnet-arm-pportal/
  2. Как добавить статический частный IP-адрес существующей виртуальной машины: https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-static-private-ip-arm-pportal/#how-to-add-a-static-private-ip-address-to-an-existing-vm
  3. Если два Azure VM существовали не принадлежат ни к одному VNET, что вам нужно чтобы переместить их в подсеть VNet без потери вашего виртуального жесткого диска, обратитесь к двум документам http://blogs.msdn.com/b/karldb/archive/2013/12/13/moving-an-existing-virtual-machine-into-a-virtual-network-subnet-without-losing-your-virtual-hard-disk-or-your-mind.aspx и http://blogs.technet.com/b/canitpro/archive/2014/06/17/step-by-step-move-a-vm-to-a-different-vnet-on-azure.aspx.