我的开发人员机器上运行着几个 Web 应用程序。它们模仿了托管在子域上的生产 Web 应用程序。例如,请考虑:
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 计算机上将对“api.myserver.com”的 HTTP 调用(请注意缺少端口号)重定向到 127.0.0.1:8000 等?请注意,这需要同时应用于客户端调用(在浏览器中)和服务器端调用(从 IIS 到 Python 开发服务器,反之亦然)。
我是否需要代理在本地运行才能实现此目的?您能推荐这样的工具吗?
答案1
实际上解决你的问题的方法比端口转换简单得多。
由于整个 127.xxx IP 块被路由到本地主机,因此您可以使用此块中所需的任何 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 倾向于囤积端口 80 的所有可用 IP,因此您需要禁用套接字池才能使其完美运行:
http://www.iislogs.com/steveschofield/iis7-post-44-iis7-and-apache-on-the-same-machine
答案2
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 定义。
答案3
您应该将您的网站配置为响应不同的主机头而不是不同的端口,然后使用您的hosts
文件将所有这些名称映射到 127.0.0.1;这样,您只需在您的网络浏览器中输入“www.myserver.com”或“api.myserver.com”,就会使用正确的网站。