ИмяVirtualHost *: 80 не имеет VirtualHosts
У меня есть два имени домена, два сертификата ssl и два ip-адреса. Я пытаюсь настроить для себя файлы apache virtualhost для них.
Во-первых, я прокомментировал все экземпляры "NameVirtualHost" и "Listen" для портов 80 и 443. Затем я сделал следующее с файлами виртуальных хостов.
Файл VirtualHost для домена1:
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 для домена2:
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>
Ответы
Ответ 1
Где-то в вашей конфигурации, вероятно, в файле конфигурации по умолчанию 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-адресов, привязанных к различным конфигурациям, вы должны быть более конкретными в своих конфигурационных директивах, чем ваш конфигурационный файл конфигурации по умолчанию.
Ответ 2
Я проигнорировал ту же ошибку за 2 месяца, когда у меня был сервер Ubuntu. Я нашел, что этот пост прекрасно решил ошибку. Спасибо Michael!
Как и вы Jay, я нашел виновника в /etc/apache 2/ports.conf. Я просто пробовал это:
# NameVirtualHost *:80
Я только прокомментировал эту строку и никаких других изменений и не более
"NameVirtualHost *: 80 не имеет виртуальных хостов"