我有一个本地测试/开发服务器(当然是HTTP),监听端口8000。
我正在研究Linux,所以为了在Internet Explorer 6、7、8等上测试页面,我使用VirtualBox运行虚拟机;我还需要看看它在Windows环境中的Firefox外观(例如字体不同)。
在我的真实机器中,我只需使用URLhttp://localhost:8000打开网站,如何从虚拟机中解决此localhost?
http://localhost:8000
现在我的解决方法是使用IP地址。有更好的主意吗?
您很可能将虚拟机的网络设置为NAT。如果您将网络设置为桥接,您应该能够通过其主机名访问您的主机。例如,如果您的主机名是“jsmith-Precision-7510”并且您想打开http://localhost:3000/,您将能够在超文本传输协议://j smith精确-7510:3000/处查看该页面。
要查找您的主机名,请打开终端/控制台,然后运行命令hostname。您的主机名将在下一行输出。
hostname
有关如何将网络设置设置为桥接的说明,请参阅VirtualBox留档。
谷歌搜索了这个:http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu
它建议使用IP:http://10.0.2.2,它对我有用。
http://10.0.2.2
所以,我编辑了主机文件C:\windows\system32\drivers\etc\hosts,并添加了以下条目:
C:\windows\system32\drivers\etc\hosts
10.0.2.2 outer
如果你在IE8上测试,记得在地址栏放http://。直接放IP是行不通的。
http://
例如:
http://10.0.2.2:3000/
实际上,user477494的答案原则上是正确的。
我在其他环境(OS X主机-虚拟Windows XP)中应用了相同的逻辑,这确实起到了作用。我确实必须循环主机灯堆栈以获取要解析的IP地址和Apache端口,但是一旦我弄清楚了,我就笑了。
我在macOS(以前的OS X)上运行Virtual Box,使用Virtual Box在Windows上测试IE等。
转到Virtual Box中的IE并通过http://10.0.2.2访问localhost用于localhost,或通过http://10.0.2.2:3000访问localhost:3000。
localhost
http://10.0.2.2:3000
localhost:3000
我将网络设置保留为NAT,不需要像上面建议的那样使用桥接器。无需编辑任何配置文件。
您需要在Windows虚拟机上编辑主机文件,就像在本地主机上一样:
C:\WINDOWS\system 32\驱动程序\etc\host
并将您的虚拟主机链接到10.0.2.2,如果您只是使用localhost然后替换
127.0.0.1localhost10.0.2.2localhost
10.0.2.2 localhost10.0.2.2 local.site1.com10.0.2.2 local.site2.com
这会告诉您的虚拟机指向您的本地计算机以获取这些域名。
如果您将适配器附加到NAT,现在将端口转发设置为本地端口是更好、更优雅的解决方案。
Settings>Network>Adapter>Advanced>Port forwarding
Settings
Network
Adapter
Advanced
Port forwarding
只需插入新规则并将Host port和Guest port设置为80(用于超文本传输协议)或22(用于ssh),依此类推。
Host port
Guest port
80
22
然后您只需输入http://localhost即可访问该机器
http://localhost
您可能还想将NAT切换到透明模式。
检查是否可以使用以下命令命中父机器:ipconfig(获取您的IP地址)
ipconfig
ping <ip>或telnet <ip> <port>
ping <ip>
telnet <ip> <port>
如果无法到达端口,请尝试在父防火墙中添加允许本地端口的新入站规则。
然后我可以访问http://<ip>:<port>
http://<ip>:<port>
获取运行Apache的机器的IP(inetaddr: inifconfig)并在虚拟框浏览器地址栏中输入。
ifconfig
要在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)来访问其他localhost站点,如下所示:
10.0.2.2 localhost10.0.2.2 subdomain.localhost
我发现10.0.2.2:<port>可以工作,但前提是混杂模式设置正确。安装我的虚拟机后,我去了设置>网络>适配器1。
10.0.2.2:<port>
默认设置NAT,并且禁用混杂模式下拉列表。我从NAT切换到桥接适配器,它启用了混杂模式下拉列表,然后将值从“拒绝”更改为“允许VM”。然后我切换回NAT,它再次禁用混杂模式,但保留了新值。
仅此更改后,我就能够启动我的虚拟机并查看我的主机localhost:<port>在我的虚拟机上位于10.0.2.2:<port>。
localhost:<port>
我通过在网络下的Virtualbox设置中添加端口转发来解决。主机IP设置127.0.0.1端口:8080访客IP:为网站提供任何IP(例如10.0.2.5)端口:8080现在从来宾机器访问http://10.0.2.5:8080使用IE
在上面所说的虚拟Box中,您可以添加此行主机文件
但是要保存它,如果您的VM中没有管理员,只需将主机文件移动到桌面,然后编辑它以添加第10.0……行,保存文件并移动到其原始位置。
在Virtual Box
现在棘手的是您的localhost,如果您从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/mysite”访问xampp网站。
我在XAMPP控制面板>Netstat(“系统”)中找到了IP。
我必须进入虚拟盒子并将我的网络设置更改为“NAT”。之后,我能够从虚拟盒子上的模拟器点击localhost在我的主机上运行到http://10.0.2.2:3000
如果您使用Virtual Box,您可以使用一行代码将Mac OSX(我认为Linux)连接到您的虚拟Windows机器->我建议在终端中运行它之前停止盒子。
VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on
我会注意到这来自我正在运行的Dinghy文档,但它是一个虚拟框命令,所以它实际上不应该关心你使用什么,只要它的虚拟框
几件事情的组合最终让我的工作结束了。在macosx上运行烧瓶服务器。
在我的Windows VM中,我编辑了host文件:
在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
NAT
然后我去了Adapter 2
Adapter 2
Host-only Adapter
我在我的mac上启动了我的服务器,在127.0.0.1:5000上运行,现在可以在http://10.0.2.2:5000的vm上访问它
127.0.0.1:5000
http://10.0.2.2:5000
在Mac上测试IE真是一场噩梦。怎么没有更简单的方法?
macOS
如果您想在Mac上使用Virtualbox设置Windows环境,只需使用适配器上的默认NAT设置,然后在Windows VM中,转到host文件并添加以下内容:
10.0.2.2 localhost10.0.2.2 127.0.0.1
与上面的答案不同,重要的是要包含两行,否则它将无法工作。
您不需要更改host文件或任何Virtual Box配置。将设置保留在NAT中。转到您的Windows实例并运行“cmd”或打开cmd.exe.执行命令“ipconfig”并获取默认网关 IP地址。在Windows IE上浏览http://10.0.2.2:8080,您将看到与您的Mac相同Safarihttp://localhost:8080/或http://127.0.0.1:8080
一般步骤:
我需要运行localhost,而不是一些奇怪的IP。
1)从您的Mac终端,执行iconfig -a以查找您的本地IP地址。它可能是最后一个。
iconfig -a
en7:标志=8863mtu 1500选项=10b乙醚38: c9:86:32:0e: 69inet6fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xeINET10.1.5.60网络掩码0xfffffe00广播10.1.5.255nd6选项=201媒体:自动选择(1000BaseT<全双工,流量控制>)状态:活跃
例如10.1.5.60
2)启动您的Windows图像。开始>键入cmd以获取终端
cmd
3)notepad c:\windows\system32\drivers\etc\hosts
notepad c:\windows\system32\drivers\etc\hosts
4)添加以下行10.1.5.60 localhost
10.1.5.60 localhost
5)打开IE,以下url应该命中在您的mac上运行的服务器:http://localhost:3000/
http://localhost:3000/
无法将VM中localhost的请求重定向到主机的localhost现在已烘焙到Windows(https://www.rfc-editor.org/rfc/rfc6761#section-6.3),包括https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/处可用的VM
为了安全起见,Microsoft现在阻止主机文件条目将localhost的地址重写为环回地址::1以外的任何内容
10.0.2.2 localhost
将被忽略。
有两种方法(我知道)可以覆盖它:
使用NETSH将代理移植到主机
netsh接口端口代理添加v4tov4监听地址=127.0.0.1监听端口=8000连接地址=10.0.2.2连接端口=8000
(其中10.0.2.2是VM上的默认网关,8000是要解析到主机上的端口。)
https://learn.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing