我有一个本地测试/开发服务器(当然是HTTP),监听端口8000。

我在Linux上工作,所以为了在Internet Explorer 6、7、8等上测试该页面,我使用VirtualBox运行一个虚拟机;我还需要看看Firefox在windows环境下的外观(例如字体不同)。

在我的真实机器中,我只需使用URL打开网站http://localhost:8000,如何从虚拟机寻址此本地主机?

现在我的解决方法是使用IP地址。有更好的主意吗?


当前回答

获取运行Apache的计算机的IP(inet-addr:in ifconfig),并在虚拟机浏览器地址栏中输入。

其他回答

我通过在网络下的Virtualbox设置中添加端口转发来解决问题。主机IP设置127.0.0.1端口:8080访客ip:为网站提供任何ip(例如10.0.2.5)端口:8080现在从来宾计算机访问http://10.0.2.5:8080使用IE

我发现10.0.2.2:<port>可以工作,但前提是“混杂模式”设置正确。安装VM后,我转到“设置”>“网络”>“适配器1”。

默认设置NAT,并禁用“混杂模式”下拉列表。我从NAT切换到Bridged Adapter,它启用了“混杂模式”下拉列表,然后将值从“拒绝”更改为“允许VM”。然后我切换回NAT,它再次禁用了混杂模式,但保留了新值。

仅此更改后,我就可以启动VM并查看主机localhost:<port>位于我的VM 10.0.2.2:<port>。

无法将请求重新定向到VM中的localhost到主机的localhost,现在已将其烘焙到Windows中(https://www.rfc-editor.org/rfc/rfc6761#section-6.3),包括VMhttps://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

为了安全保证,Microsoft现在防止主机文件条目将localhost的地址重写为环回地址以外的任何地址::1。因此,在VM的主机文件中添加一行,例如

10.0.2.2 localhost

将被忽略。

有两种方法(据我所知)可以覆盖这一点:

使用NETSH将代理传输到主机netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(其中10.0.2.2是VM上的默认网关,8000是要解析到主机上的端口。)

设置IIS以执行应用程序请求路由,然后将localhost:port的请求重写为hostIP:port

https://learn.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing

您很可能将虚拟机的网络设置为NAT。如果将网络设置为Bridged,则应该能够通过主机名访问主机。例如,如果您的主机名是“jsmith-Precision-7510”,并且您想打开http://localhost:3000/,您可以在http://jsmith-Precision-7510:3000/.

要查找主机名,请打开终端/控制台,然后运行命令hostname。您的主机名将在下一行输出。

有关如何将网络设置设置为Bridged的说明,请参阅VirtualBox文档。

在上面所述的virtual Box中,您可以添加以下行hosts文件

10.0.2.2   outer

但要保存它,如果您的VM中没有管理员,只需将主机文件移动到桌面,然后编辑它以添加行10.0….outer,保存文件,然后移动到其原始位置。