Apache2 и Vagrant: сопоставление локальных хостов

Я использую Vagrant 1.6.3 для запуска виртуальной машины Ubuntu 12.04. На этой виртуальной машине у меня Apache 2.4.9. Долгое время Apache обслуживал только один сайт - в каталоге / sites-available находился файл 000-default.conf.

Теперь я хочу добавить еще один сайт. Я создал 2 файла в каталоге / sites-available:

  • site1.local.conf
  • site2.local.conf

и я переименовал 000-default.conf в default. Также я добавил хосты site1.local и site2.local в файл ./etc/hosts на основной машине.

Имена серверов в конфигурациях Apache установлены на site1.local и site2.local соответственно. И когда я ввожу http://site1.local:8080/ и http://site2.local:8080/ в браузере все работает.

Но я не понимаю, почему http://localhost:8080/ по-прежнему указывает на первый сайт? В какой конфигурации я должен определить отображение для "localhost"? После настройки имен серверов в конфигурациях apache я подумал, что http://localhost:8080/ должен вернуть сообщение «Невозможно подключиться к Ошибка сервера.


person Tamara    schedule 09.03.2015    source источник


Ответы (1)


Предполагая, что вы используете виртуальный хост на основе имени, site1 и site2 работают, потому что клиент передает целевой хост в заголовке:

Если клиент предоставил поле заголовка Host:, в списке выполняется поиск подходящего виртуального хоста, и выполняется первое попадание в ServerName или ServerAlias, и запрос обслуживается с этого виртуального хоста.

С localhost он не знает, как сопоставить с определенными записями виртуального хоста:

Если не удалось найти подходящего виртуального хоста, запрос обслуживается первым виртуальным хостом с соответствующим номером порта, который находится в списке для IP-адреса, к которому подключился клиент (как уже упоминалось ранее).

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

person Benjamin Mosior    schedule 09.03.2015