我有一台可以工作的 Apache 2.2 服务器,但NameVirtualHost *:443 has no VirtualHosts
在重新启动时收到警告。但我确实有匹配的 VirtualHosts *:443
。
系统是Debian压榨的。该ports.conf
文件如下所示:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>
-S
这是使用 apache2ctl运行该选项时的输出:
% /usr/sbin/apache2ctl -S
[Sat Mar 06 10:07:11 2013] [warn] NameVirtualHost *:443 has no VirtualHosts
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:443 is a NameVirtualHost
default server q2a-dev.example.org (/etc/apache2/sites-enabled/q2a:1)
port 443 namevhost q2a-dev.example.org (/etc/apache2/sites-enabled/q2a:1)
port 443 namevhost tcert-dev.example.org (/etc/apache2/sites-enabled/tcert-dev:1)
*:80 is a NameVirtualHost
default server emailtest-dev.example.org (/etc/apache2/sites-enabled/emailtest:1)
port 80 namevhost emailtest-dev.example.org (/etc/apache2/sites-enabled/emailtest:1)
Syntax OK
这两个虚拟主机在位于以下位置的文件中定义/etc/apache2/sites-enabled
:
# /etc/apache2/sites-enabled/q2a
<VirtualHost *:443>
DocumentRoot /usr/share/question2answer
ServerName q2a-dev.example.org
ServerAlias q2a-dev
SSLEngine on
SSLCertificateFile /etc/ssl/certs/q2a-dev.pem
SSLCertificateKeyFile /etc/ssl/private/q2a-dev.key
DirectoryIndex index.php
</VirtualHost>
这是另一个:
# /etc/apache2/sites-enabled/tcert-dev
<VirtualHost *:443>
DocumentRoot /srv/www/tools
ServerName tcert-dev.example.org
ServerAlias tcert-dev
SSLEngine on
SSLCertificateFile /etc/ssl/certs/tcert-dev.pem
SSLCertificateKeyFile /etc/ssl/private/tcert-dev.key
<Directory "/">
AllowOverride None
</Directory>
</VirtualHost>
我发现了问题。
NameVirtualHost *:443
在 Andrew B 建议在 pastebin 上发布更多配置后,我更仔细地查看了所有文件,发现指令出现在两个地方:一个在ports.conf
目录中的文件中,一个在目录中的文件中,/etc/apache2/conf.d
所有文件在 Apache 启动期间加载-向上。我删除了其中一个实例,警告消失了。
(请注意,这整个问题在 Apache 2.4 中消失了,
NameVirtualHost
因为地址/端口组合出现在多个虚拟主机中是隐含的。)我也使用 Debian Squeeze,请看下面我的
ports.conf
样子。注释来自默认文件,注意是你加
NameVirtualHost *:443
的,我没有加。注意:如果你喜欢保留
NameVirtualHost *:443
,ports.conf
那么你应该添加一个链接,以便为 443 提供默认的 VirtualHost,如下所示:然后我会
/etc/apache2/sites-enabled/q2a
通过添加来更新<Directory>...</Directory>
(这是你放置一些选项的地方,我通过添加一些示例来完成你的代码)。最后,我将
/etc/apache2/sites-enabled/tcert-dev
通过更新<Directory>...</Directory>
.我希望它有所帮助。
这是一条警告,表示没有为 *:443 设置虚拟主机
它看起来像
如果它不匹配 *:443 那么它将抛出该警告。