提问者:小点点

如何从主机访问VM上的虚拟主机设置?


我想访问我在VirtualBox中设置的虚拟主机(网站)-

主机(macOS)目前可以通过我在VirtualBox网络设置中分配的端口转发规则访问来宾(Ubuntu-server)中apache2的默认网站:

127.0.0.1:8000 -

我已使用以下配置在来宾计算机中设置了虚拟主机:

<VirtualHost *:80>

    ServerName dropn.taxi
    ServerAdmin admin@dropn.taxi
    DocumentRoot /var/www/dropn.taxi/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

上面提到的DocumentRoot目录存在,并且具有提供基本“Hello World”主页所需的文件。我已经在本地机器上安装了我的apache对其进行了测试。网站不是问题。

但是每次我从本地机器访问localhost:8000时,我都会收到一个Ubnutu-Apache问候页面。而当我尝试localhost:8000/dropn.taxi时,我得到的是一个404页面。我已经研究了很多,我能得到的最接近解决方案是这个页面中建议的:Ubuntu Apache2本地虚拟主机url未找到

简而言之:如何从主机访问来宾机器(VM)的虚拟主机?

还是没有具体到我的情况。将不胜感激在这方面的任何帮助。


共1个答案

匿名用户

apache2服务器中的localhost默认设置为指向/var/www/html。要使虚拟主机正常工作,访问它们的域名必须是ServerName字段中定义的。

localhost:8000/dropn.taxi将转换为VM来宾中的127.0.0.1/dropn.taxi。这意味着,它正在尝试访问最终不存在的/var/www/html/dropn.taxi,因此出现了404错误。

解决这个问题的方法是将dropn.taxi添加到主机和VM中的/etc/host文件中。该行如下所示:127.0.0.1localhostdropn.taxi

当从主机访问时,我们在浏览器中使用dropn.taxi:8000,而在来宾机器中不使用端口: 8000。这样,每当访问虚拟主机时,访问它们的域名与ServerName字段匹配,它就可以工作了!