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

Предупреждение при запуске Apache 2: NameVirtualHost *: 80 не имеет VirtualHosts

Когда мой сервер Ubuntu Apache (Apache 2) запускается, я получаю предупреждающее сообщение, которое гласит:

[warn] NameVirtualHost *:80 has no VirtualHosts

Однако веб-сервер работает нормально. Что могло быть не так в конфигурации моего сайта, чтобы он выдал мне это предупреждение?

Рассматриваемый файл конфигурации (находится в /etc/apache2/sites-available) читается как (подробности удалены для краткости)

<VirtualHost *>
    <Location /mysite>
        # Configuration details here...
    </Location>

    # Use the following for authorization.
    <LocationMatch "/mysite/login">
        AuthType Basic
        AuthName "My Site"
        AuthUserFile /etc/sitepasswords/passwd
        Require valid-user
    </LocationMatch>
</VirtualHost>

Может ли тот факт, что я использую <Location> быть частью проблемы?

+ Изменить

<VirtualHost *>

читать

<VirtualHost *:80>

Или его (NameVirtualHost *: 80) дважды добавлен в ваш файл конфигурации apache2. (По умолчанию он добавлен в файл ports.conf)

Это должно устранить ошибку.

В стороне: вы не должны игнорировать эту ошибку. Конфигурация Apache, особенно при подстановке виртуальных хостов (например, Include /etc/httpd/vhosts.d/*), нестабильна. Это означает, что вы не контролируете порядок загрузки хостов явно, поэтому vhost по умолчанию для IP становится тем, который загружается первым, что может привести к непредвиденным последствиям.

Одним из примеров этого является vhost по умолчанию для IP, который также будет доступен на этом IP, а не на его название. Это может привести к утечке информации в Google со ссылкой на IP-адрес вашего сайта, а не на имя, что может сбить с толку клиентов.

Ошибка NameVirtualHost выше может быть намеком на то, что apache загрузил что-то неоптимальным образом, поэтому вы не должны игнорировать ее.

Это может быть связано с тем, что у вас есть директива NameVirtualHost более чем в одном месте.

Я не знаю о других дистрибутивах, но в Ubuntu / Debian конфигурация Apache разделена на несколько файлов, поэтому вам нужно будет проверить, где находится дублирование (httpd.conf, apache2.conf, ports.conf, conf.d / *).

О, и я только что нашел этот отличный ресурс с дополнительной информацией: Распространенные неправильные конфигурации Apache.

В поле Debian / Lenny: в /etc/apache2/ports.conf есть дополнительный оператор NameVirtualHost, который может быть причиной этой проблемы (такой же оператор есть в / etc / apache2 / sites-available / default) . Я прокомментировал это заявление, и ошибка исчезла.

У вас есть NameVirtualHost без соответствующей записи VirtualHost.

Обычно это не фатально, это просто информативная ошибка.

Это потому, что в вашей строке NameVirtualHost есть номер порта (:80), но ваши разделы VirtualHost - нет.

Как упоминает Руне, в системах Debian NameVirtualHost появляется во многих файлах - ports.conf, conf.d / virtual.conf и, возможно, в ваших собственных файлах conf int sites-available.

Убедитесь, что он существует в одном месте как NameVirtualHost *: 80 (мой находится в conf.d / virtual.conf), и предупреждения должны исчезнуть.

Как уже упоминалось, вам также необходимо сделать так, чтобы направление VirtualHost для каждого доступного сайта имело этот формат <VirtualHost *:80>

У меня такая же проблема, но в какой-то момент я отключаю сайт Apache по умолчанию. Я печатаю что-то вроде

# a2dissite default

После попытки перезапустить Apache 2 я получаю следующее сообщение:

«[предупредить] NameVirtualHost *: 80 не имеет VirtualHosts»

Затем я снова включаю сайт Apache 2 по умолчанию, и все снова работает, используется следующая команда:

# a2ensite default

Вот и все, ребята!