Когда мой сервер 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
Вот и все, ребята!