Назад | Перейти на главную страницу

Как я могу перенаправить субдомен на localhost + номер порта?

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

api.myserver.com - is mimicked by 127.0.0.1:8000     
www.myserver.com - is mimicked by 127.0.0.1:8008    
and so on...

Как я могу сделать так, чтобы на моем компьютере с Windows 7 HTTP-вызовы на "api.myserver.com" (обратите внимание на отсутствие номера порта) перенаправлялись на 127.0.0.1:8000 и т. Д.? Обратите внимание, что это должно применяться как к вызовам на стороне клиента (в браузере), так и к вызовам на стороне сервера (от IIS к серверу разработки Python и наоборот).

Нужен ли мне прокси для локального запуска для этого? Вы можете порекомендовать такой инструмент?

На самом деле решение вашей проблемы намного проще, чем перевод порта.

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

Например, отредактируйте файл hosts для привязки:

127.0.0.1    www.site.com
127.0.0.2    api.site.com
127.0.0.3    dev.site.com

Настройте каждый сайт для привязки к его IP-адресу.

Обратите внимание: поскольку вы хотите использовать другие серверы помимо IIS, а IIS имеет тенденцию накапливать все доступные IP-адреса для порта 80, вам необходимо отключить объединение сокетов, чтобы это работало идеально:

http://www.iislogs.com/steveschofield/iis7-post-44-iis7-and-apache-on-the-same-machine

Вы должны настроить свои веб-сайты так, чтобы они отвечали на разные заголовки хоста, а не на разные порты, а затем использовать свой hosts файл для сопоставления всех этих имен с 127.0.0.1; Таким образом, вы сможете просто ввести «www.myserver.com» или «api.myserver.com» в своем веб-браузере, и будет использоваться правильный сайт.

Apache с mod_proxy делает то, что вы хотите. Пример:

<VirtualHost 127.0.0.1:80>
    ServerName api.myserver.com
    ProxyRequests On
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
</VirtualHost>

Определите такое определение VirtualHost для каждого необходимого вам поддомена.