Apache2 默认覆盖虚拟主机

Apache2 默认覆盖虚拟主机

我有一台运行 apache2 的 Ubuntu 12.10 LTS 服务器,其中安装了一个简单的 wordpress。我在 /etc/apache2/sites-available 中创建了虚拟主机,并使用 a2ensite 启用了它。两天来一切都运行良好。

今天早上我醒来检查网站,发现虚拟主机似乎根本不起作用。它一直转到 apache2 中的默认网站。

这是我的配置:

默认

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

虚拟主机:domain.com

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

如您所见,我有两个独立的配置,没有冲突。但 apache2 一直恢复到默认站点,而不是基于名称的虚拟主机。我的 /etc/hosts 文件是正确的,并且有一个指向面向公众的 IP 的 FQDN 和主机名。这只是一夜之间发生的。

我在 domain.com 上运行了 a2dissite,重新加载了 apache2,然后在 domain.com 上运行了 a2ensite,但没有任何结果。最后我只好使用默认配置运行 a2dissite。我这样做之后,domain.com 网站就可以正常显示我的 wordpress 网站了。

知道为什么会发生这种情况吗?我已经运行 apache2 和 nginx 多年了,从来没有遇到过虚拟主机问题。这个有点奇怪。我不应该禁用默认站点才能使我的其他虚拟主机正常工作。

有什么想法吗?

答案1

尝试添加

服务器名称 localhost

进入默认虚拟主机。您也可以暂时禁用< 目录 />来自默认虚拟主机的部分,它似乎是无用的。

相关内容