NameVirtualHost *:443 не имеет виртуальных хостов при сжатии Debian
У меня есть сервер Apache 2.2, который работает, но я получаю NameVirtualHost *:443 has no VirtualHosts
предупреждения при перезапуске. Но у меня есть VirtualHosts, которые соответствуют *:443
,
Система Debian Squeeze. 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>
3 ответа
Я нашел проблему. После того, как Эндрю Б предложил выложить больше настроек на 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, он выдаст это предупреждение.