我有一台运行 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
进入默认虚拟主机。您也可以暂时禁用< 目录 />来自默认虚拟主机的部分,它似乎是无用的。