Назад | Перейти на главную страницу

NameVirtualHost *: 443 не имеет VirtualHosts в 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>

Вот результат при запуске -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>

Я нашел проблему. После того, как Эндрю Б предложил опубликовать больше настроек на pastebin, я более внимательно просмотрел все файлы и обнаружил, что у меня есть ДВА места, где NameVirtualHost *:443 появилась директива: один в ports.conf и один в файле в каталоге /etc/apache2/conf.d все файлы из которых загружаются при запуске Apache.

Я удалил один из экземпляров, и предупреждение исчезло.

(Обратите внимание, что вся эта проблема исчезла в Apache 2.4 как NameVirtualHost неявно используется для комбинаций адрес / порт, появляющихся на нескольких виртуальных хостах.)

Я тоже использую Debian Squeeze, пожалуйста, посмотрите ниже, как я ports.conf выглядит как.

Комментарий поступает из файла по умолчанию, обратите внимание, что вы добавили NameVirtualHost *:443, Я не сделал.

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Примечание: в случае, если вы предпочитаете оставить NameVirtualHost *:443 в ports.conf тогда вы должны добавить ссылку, чтобы иметь VirtualHost по умолчанию для 443 следующим образом:

ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

Тогда я бы обновил /etc/apache2/sites-enabled/q2a добавляя <Directory>...</Directory> (здесь вы указываете некоторые параметры, я завершил ваш код, добавив несколько примеров).

<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

  <Directory /usr/share/question2answer>
    DirectoryIndex index.php

    # here you can also add some other options like:
    Options -Indexes FollowSymLinks MultiViews
    Order deny,allow
    Allow from all
    AllowOverride All
  </Directory>
</VirtualHost>

Наконец я бы изменил /etc/apache2/sites-enabled/tcert-dev обновив корень документа в <Directory>...</Directory>.

<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 /srv/www/tools>
    AllowOverride None
  </Directory>
</VirtualHost>

Я надеюсь, что это помогает.

Это предупреждение о том, что для *: 443 не настроены виртуальные хосты.

Это будет выглядеть примерно так

<virtualhost *:443>

</virtualhost>

Если он не соответствует *: 443, он выдаст это предупреждение.