了解具有 VirtualHosts 的子域名的基础知识

了解具有 VirtualHosts 的子域名的基础知识

我想为我的网站创建两个子域名。为此,我在defaultsites-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,因为所有这些都托管在一个系统上……这不是很有用。因此,当我在浏览器中访问时,我收到的网站与访问时相同。sub1sub2sub1.nmagerko.menmagerko.me

关于如何进行有什么建议吗?

答案1

嗯,你写的配置对我来说似乎是正确的,所以我将尝试向你展示如何调试该问题:

1- 确保 DNS 已正确配置,执行dig nmagerko.medig sub1.nmagerko.medig 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。

相关内容