Попередження про запуск Apache 2: У NameVirtualHost *: 80 немає VirtualHosts


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 Confing. (За замовчуванням його додано у файл ports.conf)

Це повинно очистити помилку.

Убік: не слід ігнорувати цю помилку. Конфігурація Apache, особливо коли глобальний віртуальний хост (наприклад, включити /etc/httpd/vhosts.d/*), не є стабільним. Це означає, що ви не контролюєте порядок завантаження хостів явно, тому типовий vhost для IP стає тим, хто завантажується спочатку, що може призвести до ненавмисних наслідків.

Одним із прикладів цього є vhost за замовчуванням для IP-адреси також буде доступний для цього IP, а не його ім'я . Це може спричинити витік інформації в Google із посиланням на IP ваших сайтів, а не на ім'я, що може заплутати клієнтів.

Помилка NameVirtualHost, наведена вище, може бути натяком на те, що apache завантажував речі неоптимальним способом, тому не слід ігнорувати це.


5
Ви можете встановити vhost за замовчуванням так:<VirtualHost _default_ thehostname.com>
Емі Б

51

Це може бути тому, що у вас є директива NameVirtualHost у більш ніж одному місці.

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

О, і я щойно знайшов цей чудовий ресурс з додатковою інформацією: Загальні неправильні конфігурації Apache .


3
Надане вами посилання виглядає як чудовий ресурс для спроби зрозуміти нюанси файлів конфігурації Apache. Дякую!
Kit Roed

4
Дякую! Це була моя проблема - я створив virtual.conf для NameVirtualHost, не знаючи, що це вже в ports.conf
rcampbell

Спасибі - та ж проблема тут у конфігурації сервера ubuntu за замовчуванням: ports.conf містить NameVirtualHost : 80 і не повинен повторюватися у файлах, що підтримують / конфігурують!
DrSAR

1
У моєму випадку ця проблема була через те, що ubuntu мав 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 немає.


2

Як згадує Руна, у системах Debian NameVirtualHost з'являється у багатьох файлах - ports.conf, conf.d / virtual.conf і, можливо, у власних конф-файлах у доступних сайтах

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

Як вже згадувалося, вам також потрібно зробити напрямок VirtualHost для кожного доступного сайту мати такий формат <VirtualHost *:80>


2

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

# a2dissite default

Після спробу перезапустити Apache 2, я отримую це повідомлення:

"[попередження] У NameVirtualHost *: 80 немає VirtualHosts"

Потім я знову включаю сайт "за замовчуванням" Apache 2 і все працює знову, використовувана команда:

# a2ensite default

Це все, шановні!


Це була найкраща порада.
Джині

Дивовижна порада, я запускаю zpanelCP, і нічого не вийшло, окрім цього. Дякую ! :)
Еліран Ефрон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.