Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > Непонятная работа Apache 2.4 с виртуальными хостам


Автор: Majestio 20.5.2022, 10:57
Установил Apache 2.4 под FreeBSD 13.0, настроил два виртуальных хоста, вижу что-то не то.

А именно:
  • В основной конфигурации хост: freebsd-13.loc
  • Виртуальные хосты: template-html5.loc, template-laravel.loc
Так вот, если в основном файле конфигурации httpd.conf включено подключение extra/httpd-vhosts.conf, по при запросе http://freebsd-13.loc - мне отдается содержимое от http://template-html5.loc.
Но если отключить виртуальные хосты, тогда отдается как надо - http://freebsd-13.loc.

Подскажите, пожалуйста, что я сделал неправильно.

PS: Продублировал основной хост в виртуальных - заработало. Но, имхо, это костыль! :-(

Автор: ida 26.5.2022, 15:15
Цитата(Majestio @  20.5.2022,  11:57 Найти цитируемый пост)
Подскажите, пожалуйста, что я сделал неправильно.

PS: Продублировал основной хост в виртуальных - заработало. Но, имхо, это костыль! :-(


Задача решена?

Автор: Majestio 29.5.2022, 03:21
Цитата(ida @  26.5.2022,  15:15 Найти цитируемый пост)
Задача решена?

Не совсем, как хотелось бы. В виртуальных хостах продублировал настройки основного хоста - работает.
Заметил в настройках в файле виртуальных хостов вот такой комментарий:
Цитата

# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.

Возможно из-за этого и работает, но почему без этого не подхватывает основные настройки (основное имя сервера) - не понимаю! smile 

Автор: Oldshelf 29.5.2022, 18:21
Предположение.

Что, если запрашиваемый хост "freebsd-13.loc" не совпадает ни с одним хостом из правил, например по протоколу (https!=http). Тогда в одном случае используется дефолтный хост из "httpd.conf", а в другом - первый из "extra/httpd-vhosts.conf". Проблему решило добавление во vhosts дефолтного хоста первым правилом?

Автор: Majestio 29.5.2022, 20:18
Цитата(Oldshelf @  29.5.2022,  18:21 Найти цитируемый пост)
Что, если запрашиваемый хост "freebsd-13.loc" не совпадает ни с одним хостом из правил

В основном конфиге: 
ServerName freebasd-13.loc
https пока не строил

Цитата(Oldshelf @  29.5.2022,  18:21 Найти цитируемый пост)
Проблему решило добавление во vhosts дефолтного хоста первым правилом?

Ага.

Автор: Oldshelf 30.5.2022, 14:56
Похоже на обращение к дефолтному хосту из-за отсутствия подходящего под запрос хоста.

Можно проверить. Переместить хост "freebsd-13.loc" с первого места в конец "extra/httpd-vhosts.conf", а в качестве первого хоста указать рандомный хост со страницей-заглушкой. Если сопоставление с "freebsd-13.loc" срабатывает, то это ни на что не повлияет, если же откроется заглушка, значит запрашиваемый хост "freebsd-13.loc" не совпадает с хостом, указанным в "extra/httpd-vhosts.conf".

Автор: Majestio 5.6.2022, 04:05
Цитата(Oldshelf @  30.5.2022,  14:56 Найти цитируемый пост)
Можно проверить.

Так я уже и проверял. Если убрать из конфига виртуальных хостов запись о "freebsd-13.loc", то, при обращении к "freebsd-13.loc", начинает грузится содержимое из "template-html5.loc". Собственно, с чего и начался разговор. Получается, что в конфиге виртуальных хостов "основной" домен "freebsd-13.loc" резолвится, а из главного конфига - нет.

Автор: Oldshelf 5.6.2022, 16:33
Понятно. Я предложил переместить "freebsd-13.loc" в списке виртуальных хостов на позицию ниже. Если что-то изменится и начнёт отдаваться "template-html5.loc", значит дело не в совпадении с записью для "freebsd-13.loc" в "extra/httpd-vhosts.conf", а в том, что запрашиваемый домен просто не находится и берётся любая первая запись в качестве замены.

Автор: Majestio 6.6.2022, 19:58
Сделал как ты сказал. На freebsd-13.loc начало выдаваться содержимое из первого виртуального хоста, а именно с "template-html5.loc". И его пробовал комментить - тогда выдается с последнего ""template-laravel.loc". И только тогда, когда вообще нет виртуальных хостов (либо весь файл закомментирован, либо в файле все хосты в комменте) - только тогда честно отдается содержимое "freebsd-13.loc".

Автор: Oldshelf 7.6.2022, 10:33
Цитата(Majestio @  6.6.2022,  19:58 Найти цитируемый пост)
И только тогда, когда вообще нет виртуальных хостов (либо весь файл закомментирован, либо в файле все хосты в комменте) - только тогда честно отдается содержимое "freebsd-13.loc". 

Вероятно, в этом случае срабатывает правило из "httpd.conf".

Очень похоже на ошибку в написании запроса. Нужно убедиться, что в одном из URL нет, к примеру, кириллических символов. Самый верный способ: заново аккуратно набрать "freebsd-13.loc" в хостах (после "template-html5.loc", чтобы знать, что хост отдаётся не по дефолтному правилу) и скопировать его затем в адресную строку браузера (тогда хосты точно совпадут).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)