我有一个本地测试/开发服务器(当然是HTTP),监听端口8000。
我在Linux上工作,为了在Internet Explorer 6、7、8等浏览器上测试页面,我使用VirtualBox运行虚拟机;我还需要在Windows环境下查看Firefox的显示效果(例如字体不同)。
在我的实际机器上,我只需使用URL http://localhost:8000
打开网站,如何从虚拟机中访问本地主机呢?
目前我的解决方法是使用IP地址。有更好的建议吗?
我有一个本地测试/开发服务器(当然是HTTP),监听端口8000。
我在Linux上工作,为了在Internet Explorer 6、7、8等浏览器上测试页面,我使用VirtualBox运行虚拟机;我还需要在Windows环境下查看Firefox的显示效果(例如字体不同)。
在我的实际机器上,我只需使用URL http://localhost:8000
打开网站,如何从虚拟机中访问本地主机呢?
目前我的解决方法是使用IP地址。有更好的建议吗?
我在Google上找到了这个链接:http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu
它建议使用IP地址:http://10.0.2.2
,对我而言有效。
因此,我编辑了hosts文件C:\windows\system32\drivers\etc\hosts
并添加了以下条目:
10.0.2.2 outer
如果你在测试IE8,记得要在地址栏中输入http://
。直接输入IP地址是行不通的。
例如:
http://10.0.2.2:3000/
localhost
作为地址,所以我需要访问 localhost
而不是 10.0.2.2
。 - Dominic我在 macOS(之前是 OS X)上运行 Virtual Box,使用 Virtual Box 测试 Windows 上的 IE 等。
在 Virtual Box 中访问 IE,并通过 http://10.0.2.2
访问 localhost
,或者通过 http://10.0.2.2:3000
访问 localhost:3000
。
我将网络设置保持为 NAT,在我的情况下不需要桥接,也无需编辑任何配置文件。
在OSX上启用此功能,我需要执行以下步骤:
VirtualBox Preferences -> Network -> Host-only Networks ->
,点击“+”图标。点击OK。“设置”图标->“网络”-> “适配器2” ->
在“连接至:”下拉菜单中,选择“Host-only Adapter”,您的网络(vboxnet0
)应默认显示在下面。 点击OK。http://10.0.2.2/
访问localhost。您可以通过将其引用添加到hosts文件(C:\windows\system32\drivers\etc\hosts
)来使用localhost
并访问其他localhost站点,如下所示:
10.0.2.2 localhost
10.0.2.2 subdomain.localhost
现在无法将来自VM的请求重新定向到主机的localhost,这已经被Windows内置(https://www.rfc-editor.org/rfc/rfc6761#section-6.3),包括位于https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/的VM可用性。
出于安全考虑,Microsoft现在防止主机文件条目覆盖本地主机地址以外的任何内容。因此,在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是虚拟机上的默认网关,8000是您想在主机上解析的端口。)
<protocol>://localhost:<port>
访问,而不是直接通过 IP 访问。对于 Windows 10,这应该是被接受的答案。 - Octavian Larihostname
。您的主机名将输出在下一行。whatever.local
。 - Marc-André Lafortune我不得不进入VirtualBox并将网络设置更改为“NAT”。之后,我可以通过http://10.0.2.2:3000
从虚拟机上的仿真器访问在主机上运行的localhost
http://10.0.2.2
正如@Pytth在这里描述的那样访问主机的本地主机。 - Purplejacket设置
> 网络
> 适配器
> 高级
> 端口转发
只需插入新规则,并将主机端口
和客户端端口
设置为80
(用于http)或22
(用于ssh),等等。
然后,您就可以通过输入http://localhost
来访问该计算机了。
我发现10.0.2.2:<port>
可以正常工作,但只有在正确设置了混杂模式的情况下才能使用。在安装虚拟机后,我进入“设置”>“网络”>“适配器1”。
默认情况下设置为NAT,并且混杂模式下拉菜单被禁用。我将其从NAT切换到桥接适配器,这样就启用了混杂模式下拉菜单,然后将值从“拒绝”更改为“允许虚拟机”。然后我又切换回NAT,这样就再次禁用了混杂模式,但保留了新值。
仅经过这个更改,我就能够启动我的虚拟机,并在虚拟机上看到我的主机机器上的localhost:<port>
,位于10.0.2.2:<port>
。
苹果电脑操作系统
如果你想在Mac上使用Virtualbox设置Windows环境,只需在适配器上使用默认的NAT设置, 并在Windows虚拟机中打开hosts文件并添加以下内容:
10.0.2.2 localhost
10.0.2.2 127.0.0.1
和上面的答案不同,重要的是要包含两行代码,否则它将无法工作。
10.2.2.3或.4
是什么?我可以ping .2
以及那些 - 虚拟机是在Windows Server下运行的Windows Server。 - ycomp