我在 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 -S
root 身份调试 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 的完整说明