it-swarm-ru.tech

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

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

68
Kit Roed

+ Правка

<VirtualHost *>

читать

<VirtualHost *:80>

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

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

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

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

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

53
Dave Cheney

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

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

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

51
Ivan

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

9
Rune

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

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

3
Dominic Eidson

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

3
derobert

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

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

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

2
Mo01

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

# a2dissite default

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

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

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

# a2ensite default

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

2
Tiago