NameVirtualHost *:443 在 debian 上没有 VirtualHosts

use*_*042 3 ssl namevirtualhost apache-2.2 debian-squeeze

我有一个 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>
Run Code Online (Sandbox Code Playgroud)

这是-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
Run Code Online (Sandbox Code Playgroud)

这两个虚拟主机定义在以下文件中/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>
Run Code Online (Sandbox Code Playgroud)

这是另一个:

# /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>
Run Code Online (Sandbox Code Playgroud)

use*_*042 7

我发现了问题。在 Andrew B 建议在 pastebin 上发布更多配置之后,我更仔细地查看了所有文件,发现我有两个地方NameVirtualHost *:443出现了该指令:一个在ports.conf目录中的一个文件中,/etc/apache2/conf.d所有文件在 Apache 启动期间加载-向上。

我删除了其中一个实例,警告消失了。

(请注意,整个问题在 Apache 2.4 中消失了,NameVirtualHost因为地址/端口组合出现在多个虚拟主机中是隐含的。)