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