我想为我的网站创建两个子域名。为此,我在default
sites-available 下的文件中创建了三个 VirtualHosts(我在 Ubuntu 上使用 Apache):
<VirtualHost 127.0.0.1>
ServerName nmagerko.me
...
DocumentRoot /var/www
...
</VirtualHost>
<VirtualHost 127.0.0.1>
ServerName sub1.nmagerko.me
...
DocumentRoot /some/different/path
...
</VirtualHost>
<VirtualHost 127.0.0.1>
ServerName sub2.nmagerko.me
...
DocumentRoot /some/different/path2
...
</VirtualHost>
但是,我不确定此后该做什么。我的/etc/hosts
文件中有这些子域和主域,并且我在域名注册商的域编辑器中为和127.0.0.1
设置了 A 记录。但是,这些 A 记录指向与我的主域相同的 IP,因为所有这些都托管在一个系统上……这不是很有用。因此,当我在浏览器中访问时,我收到的网站与访问时相同。sub1
sub2
sub1.nmagerko.me
nmagerko.me
关于如何进行有什么建议吗?
答案1
嗯,你写的配置对我来说似乎是正确的,所以我将尝试向你展示如何调试该问题:
1- 确保 DNS 已正确配置,执行dig nmagerko.me
、dig sub1.nmagerko.me
和dig sub2.nmagerko.me
并查找 IP。用于wget X.nmagerko.me
测试,浏览器可以缓存 DNS 回复。
2-确保/some/different/path
、/var/www
和中的文件/some/different/pat2
不同。
3-确保使用以下命令重新启动 Apache
sudo 服务 apache2 重启
此外,您还可以查看日志。
希望这有帮助。
答案2
尝试在所有实例中将 IP 地址更改为端口 80:
<VirtualHost *:80>
ServerName nmagerko.me
...
DocumentRoot /var/www
...
</VirtualHost>
这可能有助于解决虚拟主机仅监听内部(本地)流量的问题。由于您正在设置域 A 记录,我假设您正在使用公开可用的服务器?
不要忘记在任何配置文件更改后重新加载 apache:
$ sudo service apache2 reload
最后,请让我们知道这只是您在本地进行的测试。如果是,您可能不需要更改域的 A 记录(除非您托管自己的私有 DNS?)。
答案3
如果没有完整的 httpd.conf(包括包含文件),从这里是不可能判断的,但是添加
NameVirtualHost 127.0.0.1:80
以上您的第一个<virtualHost domain:80>
可能有帮助吗?更改后重新启动 apache。