You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VirtualBox Ubuntu客户机配置多子域名后无法在宿主机正常访问的问题求助

VirtualBox Ubuntu客户机配置多子域名后无法在宿主机正常访问的问题求助

看起来你已经把Apache虚拟主机和VirtualBox端口转发的基础框架搭起来了,只是在域名解析和访问方式上踩了两个小坑,我帮你一步步梳理解决:

一、修正宿主机的hosts文件配置

你之前在hosts里写127.0.0.1:8000 website.com是错误的——hosts文件只负责域名到IP的映射,不支持带端口号。正确的做法是在宿主机的hosts文件(Windows是C:\Windows\System32\drivers\etc\hosts,Linux/macOS是/etc/hosts)里添加以下内容:

127.0.0.1    test.website.com
127.0.0.1    live.website.com
127.0.0.1    website.com

保存后,宿主机就能把这几个域名解析到本地IP了。

二、用正确的URL访问子域名

因为你在VirtualBox里做的是宿主机8000端口转发到客户机80端口,所以访问的时候必须带上8000端口号,否则浏览器会默认用80端口,找不到对应的服务。正确的访问地址应该是:

  • 测试站点:test.website.com:8000
  • 正式站点:live.website.com:8000

三、确保客户机的虚拟主机目录权限正确

你已经配置了DocumentRoot,但要确保这两个目录存在且Apache有访问权限:

# 创建目录
sudo mkdir -p /var/www/html/test /var/www/html/live
# 设置权限给Apache运行用户www-data
sudo chown -R www-data:www-data /var/www/html/test /var/www/html/live
sudo chmod -R 755 /var/www/html/test /var/www/html/live

可以在两个目录下分别创建测试文件验证:
比如在/var/www/html/test/index.html里写:

<h1>Test Website</h1>

在/var/www/html/live/index.html里写:

<h1>Live Website</h1>

四、重新加载Apache配置

最后重新加载Apache让配置生效(不用重启,重载更轻量):

sudo systemctl reload apache2

为什么之前的访问会出问题?

  1. hosts带端口:hosts文件不识别端口,所以你之前的配置无法让test.website.com解析到本地,浏览器自然提示“Server not found”。
  2. 访问localhost子域名跳转到test站点:Apache会把虚拟主机配置里第一个定义的站点作为默认站点,当你访问test.localhost:8000时,这个域名不匹配任何VirtualHost的ServerName,Apache就会返回第一个默认站点(也就是test.website.com)的内容。

如果不想用自定义的website.com域名,也可以直接用localhost的子域名,比如把VirtualHost的ServerName改成test.localhost和live.localhost,然后在宿主机hosts里添加127.0.0.1 test.localhost live.localhost,这样访问test.localhost:8000和live.localhost:8000也能正常工作。

备注:内容来源于stack exchange,提问作者xdobx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:58:06