从本地网络中的计算机远程访问安装在VM上的Apache服务器

时间:2014-05-03 05:52:05

标签: apache virtual-machine vagrant

我想从网络内部的计算机访问Apache,问题是Apache在虚拟机上运行:

框图

(  [A: VM Running Apache] -- [B: Actual machine]  ) ------ [C: Actual machine]

IP' S:

A: 192.168.55.55
B: 192.168.1.25

我可以很好地从B访问A,但不能从C访问A.(我收到的消息显示'与服务器的连接超时'过了一会儿)。

B:网络信息

enter image description here

PD:Apache在VM中的原因是因为我使用的是Vagrant,不确定是否与任何事情有关,但我认为我还是提到它。

2 个答案:

答案 0 :(得分:1)

如果你的Vagrant版本是> = 1.5并且使用公共网址没有引起关注,那么解决方案应该是微不足道的:

vagrant share

更多信息here

答案 1 :(得分:1)

这就是我在家庭网络上工作的原因。

在实际运行Vagrant的机器上,编辑Vagrant文​​件并从主机端口转发 8088 (或您选择的任何端口#)(' Actual Machine'如您所说)在Guest上移植 80 (' VM正在运行Apache'正如您所说的那样)。

正常流浪汉,您应该会看到启动时发生端口转发。我个人大约有8个虚拟主机在我的Vagrant盒子里运行,每个主机都有自己的主机名。我在主机(机器' B'上面)上编辑了我的主机文件,以便将这些主机名指向Vagrant框的ip。它工作得很好,我可以在地址栏中输入类似 mysite.dev 的内容,该网站会在我的本地计算机上启动。

现在要让它在另一台机器上运行,在与主机相同的子网内,您需要在第二台机器上编辑hosts文件。将主机名(我的示例是 mysite.dev )指向主机的实际IP地址。这会将 mysite.dev 的任何实例转发到您标记为' B'的计算机上。在你的问题。唯一的问题是,这只是指向标准端口 80 ,就像任何普通网页一样。您希望此流量真正进入机器A' A'在你的问题。因此,不要只将 mysite.dev 放入浏览器的地址栏,而是将 mysite.dev:8088 (或您选择的任何端口号转发到计算机&#39) ; A'之前)。

现在来自' C'将被发送到机器' B'因为hosts文件告诉它去那里,你添加到地址的附加端口强制机器' B'将该流量转发到机器“A'”上的端口 80 。机器' A'收到请求并将数据返回给机器' B'然后将其转发回机器'。

最终结果是机器' C'看到从机器返回的页面' A'。

希望总结一切。

祝你好运!

c0p