我想访问在VirtualBox-> Ubuntu-Server 18中设置的虚拟主机(网站)。我已经安装了apache2,并且一切都已设置。
通过我在VirtualBox网络设置中分配的端口转发规则,主机(macOS)目前可以访问来宾(Ubuntu服务器)中apache2的默认网站。
127.0.0.1:8000 -> 10.0.2.15:80
我已经在来宾计算机中使用以下配置设置了虚拟主机:
<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 local virtual hosts url not found
简而言之:如何从主机访问来宾计算机(VM)的虚拟主机?
仍然不是我的情况特定的。希望在这方面有帮助。
答案 0 :(得分:0)
localhost
默认设置为指向/var/www/html
。为了使虚拟主机正常工作,访问它们的域名必须是ServerName
字段中定义的域名。
localhost:8000/dropn.taxi
将在VM guest虚拟机中转换为127.0.0.1/dropn.taxi
。这意味着,它正在尝试访问最终不存在的/var/www/html/dropn.taxi
,因此出现了404
错误。
解决方案是将dropn.taxi
添加到主机和VM中的/etc/hosts
文件中。该行如下所示:
127.0.0.1 localhost dropn.taxi
从主机访问时,我们在浏览器中使用dropn.taxi:8000
,而来宾计算机中未使用端口:8000
。这样,无论何时访问虚拟主机,访问它们的域名都与ServerName
字段匹配,并且可以正常工作!