#apache #http #configuration #apache2
#apache #http #конфигурация #apache2
Вопрос:
Я использую Apache2 в Ubuntu 10, и у меня есть файлы конфигурации моего сайта, расположенные в числовом формате и по порядку. Мой сервер по умолчанию psychedeli.ca , но я также запускаю другой сайт с того же окна на mahoganytales.com. В настоящее время оба этих домена указывают на один и тот же сайт (тот, для psychedeli.ca). Объявление NameVirtualHost *:80
находится в моем файле ports.conf, поэтому я почти уверен, что моя глобальная конфигурация сервера проверяется. Как я могу это исправить?
Вот мои файлы виртуальных хостингов:
001-psycho
<VirtualHost *:80>
DocumentRoot /var/apps/psycho/public
ServerName psychedeli.ca
</VirtualHost>
002-mahogany
<VirtualHost *:80>
DocumentRoot /var/apps/mahogany/public
ServerName mahoganytales.com
</VirtualHost>
Ответ №1:
попробуйте создать новый файл conf по адресу /etc/apache2/conf.d
, например, vhosts.conf
с этим содержимым на нем:
NameVirtualHost *
Ответ №2:
Похоже, что действует конфигурация по умолчанию, а не записи вашего хоста. Ниже приведена процедура, которая работает в Ubuntu Apache2.
Первый,
- создайте виртуальный хостинг в
/etc/apache2/sites-available/somesite
, - затем
a2ensite somesite
, чтобы заставить его работать. - Наконец,
/etc/init.d/apache2 restart
перезапустить apache.
Если вы считаете, что выполнили вышеуказанные шаги, то не могли бы вы подтвердить, что у вас есть файлы hosts в /etc/apache2/sites-enabled/
?
Ответ №3:
У каждого доменного имени должен быть свой собственный уникальный ip-адрес, именно так можно находить разные сайты.
Используя *:80 в директиве виртуального хоста, вы даете указание Apache прослушивать все IP-адреса, порт 80 и отправлять его в этот каталог. Со своим вторым виртуальным хостингом вы делаете то же самое (у всех IP-порт 80, и отправляете его туда). Ну, поскольку вы даете ему два конфликтующих оператора, он принимает первое совпадение и использует его.
Если вы хотите обслуживать несколько веб-сайтов, каждый должен отвечать на свой собственный уникальный IP-адрес, т.Е.:
site aaa.com - 145.25.82.110
site bbb.com - 145.25.82.111
Оттуда каждая запись vhosts будет прослушивать свой собственный IP-адрес и порт для каждого сайта. В случае операционной системы виртуальный хост необходимо изменить на (используя пример IP-адресов):
<Виртуальный хостинг 145.25.82.110:80> DocumentRoot /var/apps / psycho/public Имя_сервера psychedeli.ca </VirtualHost> <Виртуальный хостинг 145.25.82.111:80> DocumentRoot /var/apps /mahogany/public Имя_сервера mahoganytales.com </VirtualHost>
Это предписывает серверу прослушивать статический IP 1 порт 80 (как определено в именованных файлах конфигурации.conf и связанной с ними привязки) и отправлять его в первый базовый каталог сайта, а также любые вызовы на втором статическом IP-порту 80 и отправлять его во второй базовый каталог сайта.
Что касается настройки bind / named, это выходит за рамки этого вопроса…
Комментарии:
1. Вы можете обслуживать несколько имен хостов с одного IP-адреса с помощью <Virtualhost *:80> и NameVirtualHost * — вам нужно только создать отдельные определения виртуальных хостов с разными значениями ServerName или использовать один виртуальный хост с ServerAlias , перечисляющими альтернативные доменные имена
2. Просто хотел добавить: DNS-серверы разрешают IP-адреса из имен хостов, и у них может быть один и тот же IP-адрес, указанный для нескольких имен хостов. Но остальная часть объяснения (что apache обращается к первому соответствующему виртуальному хосту и игнорирует второй) Я считаю, что это абсолютно точно. Однако для устранения неоднозначности запроса должно присутствовать что -то, и в этом случае доменное имя, предоставленное конечным пользователем / клиентом, выполняет это и работает со значениями servername / serveralias, предоставленными конфигурацией сервера.