使用VirtualHosts了解子域的基础知识

我想为我的网站做两个子域名。 为此,我在我的default文件下创build了三个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 ,并且在我的域名注册机构的域编辑器中为sub1sub2设置了A Records。 但是,这些Alogging指向与我的主域名相同的IP,因为这些都被托pipe在一个系统上,这不是很有用。 所以,当我在浏览器中访问sub1.nmagerko.me时,我收到的网站就像我去nmagerko.me

有关如何进行的任何build议?

嗯,你写的configuration对我来说似乎是正确的,所以我会试着告诉你如何debugging问题:

1-确保DNS正确configuration执行dig nmagerko.medig sub1.nmagerko.medig sub2.nmagerko.me并寻找IP。 使用wget X.nmagerko.me进行testing,浏览器可以cachingDNS回复。

2-确保/some/different/path/var/www/some/different/pat2中的文件不同。

3-确保你重新启动Apache

sudo服务apache2重启

除此之外,你也可以看看日志。

希望这个帮助。

尝试在所有情况下将IP地址更改为端口80:

 <VirtualHost *:80> ServerName nmagerko.me ... DocumentRoot /var/www ... </VirtualHost> 

这可能有助于解决虚拟主机仅侦听内部(本地)通信的问题。 既然你正在设置你的域名logging,我假设你正在使用公开的服务器?

不要忘记在更改conf文件后重新加载apache:

 $ sudo service apache2 reload 

最后,让我们知道这只是你在本地进行testing。 如果是这样,您可能不需要更改您的域的Alogging(除非您正在托pipe您自己的私人DNS?)。

没有完整的httpd.conf(包括include),不可能从这里告诉,但添加

 NameVirtualHost 127.0.0.1:80 

在你的第一个<virtualHost domain:80>之上可能有帮助? 更改后重新启动Apache。