Як я можу вирішити помилку apache2 httpd: "змішування * портів та не-портів з адресою NameVirtualHost не підтримується"


24

Ось помилка, яку я отримую під час завантаження Apache2:

 * Starting web server apache2
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [warn] NameVirtualHost *:80 has no VirtualHosts

Я вперше дотримувався цього керівництва щодо налаштування Apache для розміщення кількох сайтів:

http://www.debian-administration.org/articles/412

Потім я знайшов подібне запитання на ServerFault і спробував застосувати рішення, але це не допомогло.

Ось приклад мого остаточного конфігурації VirtualHost:

<VirtualHost *:80>
    ServerAdmin admin@xxx.com
    ServerName  www.xxx.com
    ServerAlias xxx.com

    # Indexes + Directory Root.
    DirectoryIndex index.html
    DocumentRoot /var/www/www.xxx.com

    # Logfiles
    ErrorLog  /var/www/www.xxx.com/logs/error.log
    CustomLog /var/www/www.xxx.com/logs/access.log combined
</VirtualHost>

з доменом X'd, щоб захистити невинних :-)

Крім того, у посібнику у мене вказаний файл conf.d / virtual.conf виглядає так:

NameVirtualHost *

Дивно, що все, здається, працює добре для двох з трьох сайтів.


Опублікуйте повну (!) Конфігурацію Apache httpd або принаймні кожен рядок NameVirtualHost та <VirtualHost ...>.
joschi

Не можна змішувати два типи на одному ip: порту. У мене було налаштування, де у мене було два ip, у одного був massvhost, який звисав з нього, у іншого були всі звичайні хости на базі імен. Що ще важливіше, яка мета? Чого ви намагаєтесь досягти? Які ваші обмеження?
Марцін

Відповіді:


29

IP-адреси, названі з, NameVirtualHostповинні відповідати IP-адреси в кожному VirtualHostелементі.

Приклад:

NameVirtualHost *:80
NameVirtualHost *:81

<VirtualHost *:80>
# ...
</VirtualHost>

<VirtualHost *:81>
# ...
</VirtualHost>

# This will not work!
<VirtualHost *>
# ...
</VirtualHost>

Прочитайте документацію віртуального хоста Apache для отримання детальної інформації.


Бажаю, щоб я міг проголосувати не раз. Вони дійсно повинні це чіткіше пояснити в документації.
Alex W

13

Замініть це:

NameVirtualHost *

З цим:

NameVirtualHost *:80

2
Я ціную просту відповідь і хочу, щоб я міг прийняти і те, і інше
rcampbell

5

Додавши до відповідей, одне, що я помітив, це те, що ви не можете запустити SSL без явного оголошення: 80 для всіх директив NameVirtualHost і VirtualHost, apache не підтримуватиме:

NameVirtualHost *

і

NameVirtualHost *: 443

Змішавшись у тому ж конфігурації, ви отримаєте помилки при прослуховуванні apache на нулі порту, якщо це зробите.

Для мене я щойно додав: 80 до кожного хоста, щоб SSL міг працювати належним чином.


0

Наприклад:

<VirtualHost 85.25.97.252:80>
ServerName domain.com
ServerAlias ​​* .domain.com
ServerAdmin webmaster@domain.com
DocumentRoot "/var/www/domain.com/httpdocs/"
<Каталог "/var/www/domain.com/ httpdocs / ">
Параметри індексів FollowSymLinks
AllowOverride All
Order дозволяють, заборонити
Дозволити від усіх
</Directory>
</VirtualHost>

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