У меня есть сервер 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, он выдаст это предупреждение.