我正在尝试在 ubuntu-server 22.04 中将多个网站(测试和实时)设置为 Virtualbox 中的子域。它们的唯一目的是测试脚本,它们不必被网络(仅用于系统更新)或主机以外的其他东西看到。我安装了 apache2、php 和 mysql。然后我通过 NAT 调整 Virtualbox 以进行端口转发,并创建一条规则,其中主机端口 8000 转发到来宾端口 80。然后我重新启动机器,并可以在浏览器中使用以下命令访问 apache2 hello-world-site本地主机:8000。
这正是我所期望的。现在我想配置两个子域。我创建了一个文件,website.conf
其中包含以下文本:
## Test
<VirtualHost *:80>
DocumentRoot /var/www/html/test/
ServerName test.website.com
</VirtualHost>
## Live
<VirtualHost *:80>
DocumentRoot /var/www/html/live
ServerName live.website.com
</VirtualHost>
并设定我的/etc/apache2/apache2.conf
ServerName website.com
然后使用 systemctl 重新启动 apache。之后,我/etc/hosts
在主机上进行配置:
127.0.0.1:8000 website.com
现在我正尝试通过浏览器访问网站。我尝试测试网站和live.website.com,但都说 “找不到服务器” 当我尝试测试.localhost:8000,live.localhost:8000和本地主机:8000我到达后面的网站测试网站,默认值。
apache2ctl -t
产量:
“语法正确”
apache2ctl -S
产量:
VirtualHost configuration:
*:80 is a NameVirtualHost
default server test.website.com (/etc/apache2/sites-enabled/website.conf:2)
port 80 namevhost test.website.com (/etc/apache2/sites-enabled/website.conf:2)
port 80 namevhost live.website.com (/etc/apache2/sites-enabled/website.conf:8)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used
我怎样才能使客户机服务的两个子域名能够通过主机的浏览器进行访问,无论使用 *.localhost:8000 还是 URL?
答案1
您的 hosts 文件配置无效,因为 hosts 文件仅将域名映射到 IP 地址,端口不应出现在其中。
此外,您想要映射live.website.com
和test.website.com
,但您目前有一个(无效)条目website.com
。 hosts 文件是一个简单的映射,没有任何子域的概念。
您需要在 hosts 文件中输入如下内容
127.0.0.1 live.website.com test.website.com
一旦您有了这样的条目,您应该能够使用http://live.website.com:8000/
和访问这两个站点http://test.website.com:8000/
。
如果不是这种情况,那么您还需要在 ApacheServerName
指令中添加端口(或添加ServerAlias
带有端口的)。