Подтвердить что ты не робот

Ошибка Apache: наложение _default_ virtualhost на порт 443

Я получаю эту ошибку при попытке запустить Apache.

_default_ наложение виртуального хоста на порт 443

Я пытаюсь настроить SSL. Почти каждое решение онлайн говорит:

NameVirtualHost *:443

в файл conf, но Apache все еще не запускается и просто говорит

Не удалось запустить действие. журналы apache могут иметь больше информации

В журналах Apache имеется нулевая информация.

4b9b3361

Ответ 1

Чтобы устранить проблему в системе Debian/Ubuntu, измените файл настроек /etc/apache2/ports.conf, добавив к нему NameVirtualHost *:443. Мой ports.conf следующий на данный момент:

# /etc/apache/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

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.

    NameVirtualHost *:443

    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

Кроме того, убедитесь, что 'sites-available/default-ssl не включен, введите a2dissite default-ssl, чтобы отключить сайт. Пока вы набираете тип a2dissite самостоятельно, чтобы получить список и посмотреть, есть ли какие-либо другие настройки сайта, которые вы включили, которые могут отображаться на порт 443.

Ответ 2

На ванильном Apache2, установленном в CentOS, при установке mod_ssl он автоматически добавит файл конфигурации в:

{apache_dir}/conf.d/ssl.conf

Этот файл конфигурации содержит определение виртуального хоста по умолчанию для порта 443 с именем по умолчанию: 443. Если у вас также есть собственное определение виртуального хоста для 443 (т.е. В httpd.conf), у вас будет конфликт. Так как файлы conf.d включены в первую очередь, они победят вас.

Чтобы решить конфликт, вы можете либо удалить определение виртуального хоста из conf.d/ssl.conf, либо обновить его до своих собственных настроек.

Ответ 3

Очень маловероятно, что добавление NameVirtualHost *:443 является правильным решением, поскольку существует ограниченное количество ситуаций, в которых возможно поддерживать виртуальные хосты на основе имен через SSL. Прочтите этот и этот для некоторых деталей (может быть, лучше docs там, это были только те, которые я нашел, которые подробно обсуждали проблему).

Если вы используете относительно запатентованную конфигурацию Apache, у вас, вероятно, есть это где-то:

<VirtualHost _default_:443>

Лучше всего либо:

  • Поместите дополнительную конфигурацию SSL в этот существующий контейнер VirtualHost или
  • Прокомментируйте весь этот блок VirtualHost и создайте новый. Не забудьте указать все соответствующие параметры SSL.

Ответ 4

Я столкнулся с этой проблемой, потому что у меня было несколько подстановочных записей для тех же портов. Вы можете легко проверить это, выполнив apache2ctl -S:

# apache2ctl -S
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 30000, the first has precedence
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 20001, the first has precedence
VirtualHost configuration:
11.22.33.44:80       is a NameVirtualHost
         default server xxx.com (/etc/apache2/sites-enabled/xxx.com.conf:1)
         port 80 namevhost xxx.com (/etc/apache2/sites-enabled/xxx.com.conf:1)
         [...]
11.22.33.44:443      is a NameVirtualHost
         default server yyy.com (/etc/apache2/sites-enabled/yyy.com.conf:37)
         port 443 namevhost yyy.com (/etc/apache2/sites-enabled/yyy.com.conf:37)
wildcard NameVirtualHosts and _default_ servers:
*:80                   hostname.com (/etc/apache2/sites-enabled/000-default:1)
*:20001                hostname.com (/etc/apache2/sites-enabled/000-default:33)
*:30000                hostname.com (/etc/apache2/sites-enabled/000-default:57)
_default_:443          hostname.com (/etc/apache2/sites-enabled/default-ssl:2)
*:20001                hostname.com (/etc/apache2/sites-enabled/default-ssl:163)
*:30000                hostname.com (/etc/apache2/sites-enabled/default-ssl:178)
Syntax OK

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

Далее, посмотрите на конец вывода, и вы можете точно определить, какие файлы и строки определены виртуальными хостами, которые создают проблему. В приведенном выше примере порт 20001 назначается как в /etc/apache2/sites-enabled/000-default по строке 33, так и /etc/apache2/sites-enabled/default-ssl на линии 163. Аналогично *:30000 указан в двух местах. Решение (в моем случае) было просто удалить одну из записей.