如何将子域重新路由至本地主机 + 端口号?

如何将子域重新路由至本地主机 + 端口号?

我的开发人员机器上运行着几个 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”,就会使用正确的网站。

相关内容