我有一个本地测试/开发服务器(当然是 HTTP),监听端口 8000。
我在 Linux 上工作,所以要在 Internet Explorer 6、7、8 等上测试页面。我使用 VirtualBox 运行虚拟机;我还需要查看它在 Windows 环境中在 Firefox 上的外观(例如字体不同)。
在我的真机中,我只是使用 URL 打开网站,我http://localhost:8000
如何从虚拟机中寻址这个 localhost?
现在我的解决方法是使用 IP 地址。有更好的想法吗?
我有一个本地测试/开发服务器(当然是 HTTP),监听端口 8000。
我在 Linux 上工作,所以要在 Internet Explorer 6、7、8 等上测试页面。我使用 VirtualBox 运行虚拟机;我还需要查看它在 Windows 环境中在 Firefox 上的外观(例如字体不同)。
在我的真机中,我只是使用 URL 打开网站,我http://localhost:8000
如何从虚拟机中寻址这个 localhost?
现在我的解决方法是使用 IP 地址。有更好的想法吗?
谷歌搜索了这个: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/
我在 macOS(以前是 OS X)上运行 Virtual Box,使用 Virtual Box 在 Windows 上测试 IE 等。
转到 Virtual Box 中的 IE 并localhost
通过http://10.0.2.2
forlocalhost
或http://10.0.2.2:3000
for访问localhost:3000
。
我将网络设置保留为 NAT,在我的情况下不需要如上所述的网桥。无需编辑任何配置文件。
要在 OSX 上启用此功能,我必须执行以下操作:
VirtualBox Preferences -> Network -> Host-only Networks ->
单击“+”图标。单击确定。"Settings" icon -> Network -> Adapter 2 ->
在“附加到:”下拉列表中,选择“仅主机适配器”,vboxnet0
默认情况下您的网络 ( ) 应显示在下方。单击确定。http://10.0.2.2/
您可以localhost
通过将它们的引用添加到主机文件 ( C:\windows\system32\drivers\etc\hosts
) 来引用它并访问其他本地站点,如下所示:
10.0.2.2 localhost
10.0.2.2 subdomain.localhost
您很可能将虚拟机的网络设置为 NAT。如果您将网络设置为桥接,您应该能够通过主机名访问您的主机。例如,如果您的主机名是“jsmith-Precision-7510”并且您想打开http://localhost:3000/,您将能够在http://jsmith-Precision-7510:3000/上查看该页面。
要查找您的主机名,请打开终端/控制台,然后运行命令hostname
。您的主机名将在下一行输出。
有关如何将网络设置设置为桥接的说明,请参阅VirtualBox 文档。
无法将 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
将被忽略。
有两种方法(我知道)可以覆盖它:
使用 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 是您要在主机上解析的端口。)
我不得不进入 virtualbox 并将我的网络设置更改为“NAT”。之后,我可以localhost
通过 virtualbox 上的模拟器在我的主机上运行http://10.0.2.2:3000
如果您将适配器连接到NAT,那么现在将端口转发设置为本地端口是更好、更优雅的解决方案。
Settings
> Network
> Adapter
> Advanced
>Port forwarding
只需插入新规则并将 and 设置Host port
为Guest port
(80
对于 http)或22
(对于 ssh),依此类推。
然后你可以通过输入来访问那台机器http://localhost
我发现这10.0.2.2:<port>
可行,但前提是正确设置了混杂模式。安装我的虚拟机后,我转到设置 > 网络 > 适配器 1。
NAT 默认设置,混杂模式下拉菜单被禁用。我从 NAT 切换到桥接适配器,它启用了混杂模式下拉菜单,然后将值从“拒绝”更改为“允许虚拟机”。然后我切换回 NAT,它再次禁用了混杂模式,但保留了新值。
仅进行此更改后,我就能够启动我的 VM 并
localhost:<port>
在我的 VM 上看到我的主机10.0.2.2:<port>
。
苹果系统
如果您想在 Mac 上使用 Virtualbox 设置 windows 环境,只需使用适配器上的默认 NAT 设置,然后在您的 windows VM 中,转到 hosts 文件并添加以下内容:
10.0.2.2 localhost
10.0.2.2 127.0.0.1
与上面的答案不同,包括这两行很重要,否则它将不起作用。
您无需更改主机文件或任何 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
您需要像编辑本地主机一样在 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
这告诉您的虚拟机指向您的本地计算机以获取这些域名。
几件事的结合最终使我的工作顺利进行。在 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 真是一场噩梦。怎么没有更简单的方法?
我通过在网络下的 Virtualbox 设置中添加端口转发来解决。主机 IP 设置 127.0.0.1 端口:8080 访客 ip:为网站提供任何 IP(例如 10.0.2.5)端口:8080 现在从访客机器使用 IE访问http://10.0.2.5:8080
在上面所说的virtual Box中,您可以添加这一行hosts文件
10.0.2.2 outer
但是要保存它,如果您的 VM 中没有管理员权限,只需将主机文件移动到桌面,然后对其进行编辑以添加 10.0....outer 行,保存文件,然后移动到其原始位置。
检查您是否可以通过以下方式访问您的父计算机:(
ipconfig
获取您的 IP 地址)
ping <ip>
或者telnet <ip> <port>
如果您无法访问该端口,请尝试在您的父防火墙中添加一个允许本地端口的新入站规则。
然后我就可以访问了http://<ip>:<port>
在虚拟盒子里
现在棘手的一点是您的本地主机,如果您从 Node.js 运行,请将 IP 地址设置为 0.0.0.0,然后查找您自己的 IP 地址,例如 cmd:ipconfig --> 10.0.1.3
键入该地址和端口号。它会起作用。
一般步骤:
在带有虚拟 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。
如果您使用 Virtual Box,您可以使用一行代码将 Mac OSX(我认为是 Linux)连接到您的虚拟 Windows 机器 --> 我建议在终端中运行它之前停止该机器。
VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on
我会注意到这是来自我正在运行的 Dinghy 文档,但它是一个虚拟盒命令,所以它实际上不应该关心你使用什么,只要它的虚拟盒
我需要在本地主机上运行,而不是一些奇怪的 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/
获取运行 Apache 的机器的 IP(inet addr: in ifconfig
)并在虚拟框浏览器地址栏中输入该 IP。
实际上,user477494 的回答原则上是正确的。
我在其他环境(OS X 主机 - 虚拟 Windows XP)中应用了相同的逻辑,这就是诀窍。我确实必须循环主机LAMP堆栈以获取 IP 地址和 Apache 端口来解析,但是一旦我弄清楚了,我就笑了。