2011-08-23 3 views
34

У меня есть два имени домена, два сертификата ssl и два ip-адреса. Я пытаюсь настроить для себя файлы apache virtualhost для них.ИмяVirtualHost *: 80 не имеет VirtualHosts

Во-первых, я прокомментировал все экземпляры «NameVirtualHost» и «Listen» для портов 80 и 443. Затем я сделал следующее с файлами виртуальных хостов.

VirtualHost файл для domain1:

NameVirtualHost 1.1.1.1:80 
Listen 1.1.1.1:80 
Listen 1.1.1.1:443 
<VirtualHost 1.1.1.1:80> 
    ServerName domain1.com 
    ... 
</VirtualHost> 
<VirtualHost 1.1.1.1:443> 
    ... 
</VirtualHost> 

VirtualHost файл для domain2:

NameVirtualHost 2.2.2.2:80 
Listen 2.2.2.2:80 
Listen 2.2.2.2:443 
<VirtualHost 2.2.2.2:80> 
    ServerName domain2.com 
    ... 
</VirtualHost> 
<VirtualHost 2.2.2.2:443> 
    ... 
</VirtualHost> 
+0

* NameVirtualHost * не является устаревшим, и это больше не требуется. – andreszs

ответ

27

Где-то в вашей конфигурации, вероятно, в файле конфигурации по умолчанию Apache (я думаю /etc/apache2/httpd.conf в Ubuntu кто-то может исправить я в комментариях), это строка, которая выглядит так:

NameVirtualHost *:80 

# Also 
Listen 80 
Listen 443 

Комментарий их, и в файлах конфигурации VirtualHost, добавьте:

Listen 111.111.111.111:80 
Listen 222.222.222.222:80 
# If also using SSL 
Listen 111.111.111.111:443 
Listen 222.222.222.222:443 

NameVirtualHost 111.111.111.111:80 
NameVirtualHost 222.222.222.222:80 

Во многих конфигурациях по умолчанию Apache, то Listen и NameVirtualHost директивы поставляются со специальными символами, или глобально применять ко всем сетевым интерфейсам. Поскольку вы используете несколько IP-адресов, привязанных к различным конфигурациям, вам нужно быть более конкретными в ваших конфигурационных директивах, чем в конфигурационном файле вашего дистрибутива по умолчанию.

+0

+1 ... звучит правильно. implimenting. дайте вам знать в ближайшее время. – Jay

+0

/etc/apache2/httpd.conf пуст. /etc/apache2/httpd.conf не имеет «NameVirtualHost» или «Listen». Все еще смотрящий. – Jay

+12

@Jay try 'grep -r Слушать/etc/apache2' и' grep -r NameVirtualHost/etc/apache2' –

41

Я проигнорировал ту же ошибку за 2 месяца, когда у меня был сервер Ubuntu. Я нашел, что этот пост прекрасно решил ошибку. Спасибо Michael!. Как и вы, Jay, я нашел виновника в /etc/apache2/ports.conf. Я попытался просто:

# NameVirtualHost *:80
Я только заметил, что линии и никаких других изменений и не более

«NameVirtualHost *: 80 не имеет VirtualHosts»

+6

Отлично! Я тоже! Решено! – flaab

+0

Его работа .... Многие много спасибо –