839

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

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

在我的真机中,我只是使用 URL 打开网站,我http://localhost:8000如何从虚拟机中寻址这个 localhost?

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

4

22 回答 22

984

谷歌搜索了这个: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/
于 2009-08-11T18:27:55.890 回答
427

苹果系统

我在 macOS(以前是 OS X)上运行 Virtual Box,使用 Virtual Box 在 Windows 上测试 IE 等。

转到 Virtual Box 中的 IE 并localhost通过http://10.0.2.2forlocalhosthttp://10.0.2.2:3000for访问localhost:3000

我将网络设置保留为 NAT,在我的情况下不需要如上所述的网桥。无需编辑任何配置文件。

于 2012-10-23T09:08:27.340 回答
85

要在 OSX 上启用此功能,我必须执行以下操作:

  1. 关闭您的虚拟机。
  2. 转到VirtualBox Preferences -> Network -> Host-only Networks ->单击“+”图标。单击确定。
  3. 选择您的框并单击"Settings" icon -> Network -> Adapter 2 ->在“附加到:”下拉列表中,选择“仅主机适配器”,vboxnet0默认情况下您的网络 ( ) 应显示在下方。单击确定。
  4. 一旦你再次启动你的盒子,你应该能够访问 localhosthttp://10.0.2.2/

您可以localhost通过将它们的引用添加到主机文件 ( C:\windows\system32\drivers\etc\hosts) 来引用它并访问其他本地站点,如下所示:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost
于 2014-03-28T21:41:32.847 回答
59

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

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

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

于 2009-08-11T18:08:00.657 回答
54

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

出于安全原因,Microsoft 现在阻止主机文件条目将 localhost 的地址覆盖为环回地址 ::1 以外的任何内容。所以添加一行VM的主机文件,例如

10.0.2.2 localhost

将被忽略。

有两种方法(我知道)可以覆盖它:

  1. 使用 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 是您要在主机上解析的端口。)

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

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

于 2019-09-27T10:24:24.023 回答
48

我不得不进入 virtualbox 并将我的网络设置更改为“NAT”。之后,我可以localhost通过 virtualbox 上的模拟器在我的主机上运行http://10.0.2.2:3000

于 2016-08-25T22:29:51.750 回答
40

如果您将适配器连接到NAT,那么现在将端口转发设置为本地端口是更好、更优雅的解决方案。

Settings> Network> Adapter> Advanced>Port forwarding

只需插入新规则并将 and 设置Host portGuest port80对于 http)或22(对于 ssh),依此类推。

然后你可以通过输入来访问那台机器http://localhost

您可能还想将 NAT 切换到透明模式。

于 2013-06-27T18:15:10.010 回答
36

我发现这10.0.2.2:<port>可行,但前提是正确设置了混杂模式。安装我的虚拟机后,我转到设置 > 网络 > 适配器 1。

NAT 默认设置,混杂模式下拉菜单被禁用。我从 NAT 切换到桥接适配器,它启用了混杂模式下拉菜单,然后将值从“拒绝”更改为“允许虚拟机”。然后我切换回 NAT,它再次禁用了混杂模式,但保留了新值。

仅进行此更改后,我就能够启动我的 VM 并 localhost:<port>在我的 VM 上看到我的主机10.0.2.2:<port>

于 2014-08-07T14:25:56.990 回答
26

苹果系统

如果您想在 Mac 上使用 Virtualbox 设置 windows 环境,只需使用适配器上的默认 NAT 设置,然后在您的 windows VM 中,转到 hosts 文件并添加以下内容:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

与上面的答案不同,包括这两行很重要,否则它将不起作用。

于 2017-03-30T14:45:55.127 回答
25

您无需更改主机文件或任何 Virtual Box 配置。保留 NAT 中的设置。转到您的 Windows 实例并运行“cmd”或打开 cmd.exe。执行命令“ipconfig”并获取默认网关IP 地址。在 Windows IE 上浏览http://10.0.2.2:8080你会看到和你的 Mac Safari 一样http://localhost:8080/http://127.0.0.1:8080

于 2018-08-14T22:00:04.170 回答
22

您需要像编辑本地主机一样在 Windows 虚拟机上编辑 hosts 文件:

C:\WINDOWS\system32\drivers\etc\hosts

并将您的虚拟主机链接到 10.0.2.2,如果您只是使用 localhost,请替换

127.0.0.1 本地主机与 10.0.2.2 本地主机

例如:

10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com

这告诉您的虚拟机指向您的本地计算机以获取这些域名。

于 2013-04-17T17:07:42.047 回答
10

几件事的结合最终使我的工作顺利进行。在 macosx 上运行烧瓶服务器。

在我的 Windows VM 中,我编辑了 hosts 文件:

  • 以管理员身份运行记事本
  • 打开C:\windows\system32\drivers\etc\hosts
  • 添加此条目:10.0.2.2 outer

在 VirtualBox 中关闭 VM 和我的 Mac:

  • 转到 VirtualBox > preferences > Network > Host-only Networks > +添加网络vboxnet1
  • My_VM > settings > Network > Adapter 1
  • 选择Enable Network Adapter并设置Attached to:Bridged Adapter
  • 然后设置Advanced > Promiscuous Mode:Allow VMs
  • 点击OK
  • My_VM > settings > Network > Adapter 1
  • 设置Attached to:NAT

然后我去了Adapter 2

  • 设置Attached to:Host-only Adapter选择之前添加的网络vboxnet1

我在我的 mac 上启动了我的服务器,运行,127.0.0.1:5000现在可以在我的 vm 上访问它http://10.0.2.2:5000

伙计,在 mac 上测试 IE 真是一场噩梦。怎么没有更简单的方法?

于 2017-03-30T11:19:08.617 回答
4

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

于 2015-04-28T21:22:20.703 回答
3

在上面所说的virtual Box中,您可以添加这一行hosts文件

10.0.2.2   outer

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

于 2016-03-15T18:09:07.373 回答
2

检查您是否可以通过以下方式访问您的父计算机:( ipconfig 获取您的 IP 地址)

ping <ip>或者telnet <ip> <port>

如果您无法访问该端口,请尝试在您的父防火墙中添加一个允许本地端口的新入站规则。

然后我就可以访问了http://<ip>:<port>

于 2013-07-12T19:17:14.373 回答
2

在虚拟盒子里

  1. 将您的网络设置为桥接网络
  2. 转到高级设置混杂模式:全部允许

现在棘手的一点是您的本地主机,如果您从 Node.js 运行,请将 IP 地址设置为 0.0.0.0,然后查找您自己的 IP 地址,例如 cmd:ipconfig --> 10.0.1.3

键入该地址和端口号。它会起作用。

于 2016-05-09T11:42:25.000 回答
1

一般步骤:

  • 一个公共网络,(添加仅主机或桥接 NIC)
  • 配置首选服务以侦听适当的接口(连接到共享 NIC 的接口)
  • 使用 IP:Port 到达目标服务,使用属于共享网络的 IP。
于 2018-09-13T21:39:18.957 回答
0

在带有虚拟 Windows 7 的 Windows 上,唯一对我有用的是使用NAT 和端口转发(无法运行桥接连接)。我在这里找到了一个教程:http: //www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/(向下滚动到带有“将端口转发到虚拟机”的部分)。

通过这些更改,我可以在我的虚拟机上的 Internet Explorer 10 中使用“ http://192.168.xx.x:8888/mywebsite ”访问 xampp 网站。

我在 XAMPP 控制面板 > Netstat(“系统”)中找到了 IP。

于 2016-05-24T14:57:13.030 回答
0

如果您使用 Virtual Box,您可以使用一行代码将 Mac OSX(我认为是 Linux)连接到您的虚拟 Windows 机器 --> 我建议在终端中运行它之前停止该机器。

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

我会注意到这是来自我正在运行的 Dinghy 文档,但它是一个虚拟盒命令,所以它实际上不应该关心你使用什么,只要它的虚拟盒

于 2016-11-30T18:36:24.283 回答
0

我需要在本地主机上运行,​​而不是一些奇怪的 IP。

1) 从您的 Mac 终端,iconfig -a找到您的本地 IP 地址。应该是最后一个了

en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 38:c9:86:32:0e:69 inet6 fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xe inet 10.1.5.60 netmask 0xfffffe00 broadcast 10.1.5.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active

例如 10.1.5.60

2)启动你的Windows图像。开始 > 键入cmd以获取终端

3)notepad c:\windows\system32\drivers\etc\hosts

4)添加以下行 10.1.5.60 localhost

5) 打开 IE,下面的 url 应该会访问你 mac 上运行的服务器:http://localhost:3000/

于 2018-10-15T15:29:49.650 回答
-2

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

于 2013-10-09T14:10:16.710 回答
-3

实际上,user477494 的回答原则上是正确的。

我在其他环境(OS X 主机 - 虚拟 Windows XP)中应用了相同的逻辑,这就是诀窍。我确实必须循环主机LAMP堆栈以获取 IP 地址和 Apache 端口来解析,但是一旦我弄清楚了,我就笑了。

于 2011-02-22T15:42:34.927 回答