尝试使用 Apache2 创建子域

尝试使用 Apache2 创建子域

我在 Linode VPS 上使用 Ubuntu 10.04 和 Apache2.2 - 我正在尝试创建 mysite.com 的子域 sub.mysite.com。我已将此条目添加到 /etc/apache2/sites-enabled:

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName mysite.com
     ServerAlias sub.mysite.com
     DocumentRoot /srv/www/sub.mysite.com/public_html/
     ErrorLog /srv/www/sub.mysite.com/logs/error.log
     CustomLog /srv/www/sub.mysite.com/logs/access.log combined
</VirtualHost>

并将此行添加到 /etc/hosts 中:

127.0.0.1       sub.mysite.com

并创建了一个指向 sub.mysite.com 的 DNS 区域文件...

我可以成功 ping sub.mysite.com 但无法在浏览器中加载 index.html...

有任何想法吗?

答案1

由于您使用的是虚拟主机,请确保将此子域容器放在主虚拟主机容器之前。先到的优先于后到的,因此如果您的文件如下所示,它将不起作用:

<virtualHost *:80>
 {snip}
 ServerAlias *.mysite.com
 DocumentRoot /srv/www/mysite.com/public_html/
 {snip}
</virtualHost>

<VirtualHost *:80>
 {snip}
 ServerAlias sub.mysite.com
 DocumentRoot /srv/www/sub.mysite.com/public_html/
 {snip}
</VirtualHost>

有道理吗?您必须翻转它们,以便我的示例中的第二个 VirtualHost 容器位于第一个。如果这不是问题,并且您已经这样做了,那么请检查 Apache 错误日志(实际上,无论如何,这应该是您的第一步)。

另外,请确保文件权限正确。

答案2

确保NameVirtualHost *:80配置文件中有某个位置。Debian 将其添加到文件中的默认配置中/etc/apache2/ports.conf(我猜 Ubuntu 也会这样做)。然后以apache2ctl -Sroot 身份调试 vhost 配置,它会为您提供以下列表正确地配置虚拟主机。输出应类似于此

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server usually-default-hostname (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost sub.mysite.com (/etc/apache2/sites-enabled/your-config:1)

如果您的 vhost 没有列在这里,那么您就无法浏览它(请确保在/etc/init.d/apache2 reload浏览之前已经重新加载了 apache 配置)。

这里有关在 Debian/Ubuntu 下在 apache 中设置 vhost 的完整说明

相关内容