Предупреждение о запуске Apache 2: NameVirtualHost *: 80 не имеет виртуальных хостов

68

Когда мой сервер 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>быть частью проблемы?

Кит Роед
источник

Ответы:

53

+ Изменить

<VirtualHost *>

читать

<VirtualHost *:80>

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

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

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

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

Вышеуказанная ошибка NameVirtualHost может быть подсказкой, что apache загрузил вещи неоптимальным образом, поэтому вы не должны игнорировать это.

Дейв Чейни
источник
5
Вы можете установить виртуальный хост по умолчанию , как это:<VirtualHost _default_ thehostname.com>
Amy B
51

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

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

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

Иван
источник
3
Ссылка, которую вы дали, выглядит как отличный ресурс для понимания нюансов конфигурационных файлов Apache. Спасибо!
Кит Рёд
4
Спасибо! Это была моя проблема - я создал virtual.conf для NameVirtualHost, не зная, что он уже был в ports.conf
rcampbell
Спасибо - та же проблема здесь в конфигурации по умолчанию для сервера Ubuntu: ports.conf содержит NameVirtualHost : 80 и не должен повторяться в файлах включенных сайтов / конфигурации!
DrSAR
1
В моем случае, этот вопрос потому , что убунт был NameVirtualHost *:80как в ports.confи conf.d/virtualhosts, которые , как представляется , ошибка Ubuntu.
пушистый
9

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


источник
3

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

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

Доминик Эйдсон
источник
3

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

derobert
источник
2

AS Rune упоминает, что в системах Debian NameVirtualHost присутствует во многих файлах - ports.conf, conf.d / virtual.conf и, возможно, в ваших собственных файлах conf в sites-available

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

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

Mo01
источник
2

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

# a2dissite default

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

«[warn] NameVirtualHost *: 80 не имеет виртуальных хостов»

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

# a2ensite default

Это все, ребята!

Питер Мортенсен
источник
Это был лучший совет.
Джини
Отличный совет, я использую zpanelCP и ничего не получилось, кроме этого. Спасибо ! :)
Элиран Эфрон