FreeBSD 6.2
Apache/2.2.4На одном сервере есть 4 сайта: один глобальный и три локальных. Реализовал с помощью name-based виртуальных хостов.
При запуске апача ошибок не возникает, а вот при последовательном просмотре сайтов (global_domain.ru, www.global_domain.ru, local1.global_domain.ru, local2.global_domain.ru, local3.global_domain.ru) обязательно на каком-то вываливается ошибка "Forbidden". Перезапуск апача лечит проблему, но опять же она может возникнуть для любого другого сайта в списке.Имена хостов резолвятся ДНСом правильно.
cat /usr/local/etc/apache22/extra/httpd-vhosts.conf
NameVirtualHost <EXT_IP>:80
#Default, чтобы не заходили по <EXT_IP>
<VirtualHost "<EXT_IP>:80">
ServerAdmin adm@localhost
DocumentRoot "/usr/local/www/data-dist/"<Directory "/usr/local/www/data-dist/">
Options All
AllowOverride All
Order Deny,Allow
Deny From All
</Directory>
</VirtualHost>#global_domain.ru
<VirtualHost "<EXT_IP>:80">
ServerAdmin adm@localhost
DocumentRoot "/usr/local/www/data-dist/global_domain.ru/"
ServerName global_domain.ru
ServerAlias www.global_domain.ru
ErrorLog /var/log/httpd/global_domain.err
CustomLog /var/log/httpd/global_domain.log combined
LogLevel info<Directory "/usr/local/www/data-dist/global_domain.ru/">
AllowOverride All
Order Allow,Deny
Allow From All
</Directory>
</VirtualHost>#local1.global_domain.ru
<VirtualHost "<EXT_IP>:80">
ServerAdmin adm@localhost
DocumentRoot "/usr/local/www/data-dist/local1.global_domain.ru/"
ServerName local1.global_domain.ru
ErrorLog /var/log/httpd/local1.global_domain.err
CustomLog /var/log/httpd/local1.global_domain.log combined<Directory "/usr/local/www/data-dist/local1.global_domain.ru/">
AllowOverride All
Order Deny,Allow
Deny From All
Allow From 192.168.0.
</Directory>
EnableSendfile Off
</VirtualHost>#local2.global_domain.ru
<VirtualHost "<EXT_IP>:80">
ServerAdmin adm@localhost
DocumentRoot "/usr/local/www/data-dist/local2.global_domain.ru/"
ServerName local2.global_domain.ru
ErrorLog /var/log/httpd/local2.global_domain.err
CustomLog /var/log/httpd/local2.global_domain.log combined<Directory "/usr/local/www/data-dist/local2.global_domain.ru/">
AllowOverride All
Order Deny,Allow
Deny From All
Allow From 192.168.0.
</Directory>
</VirtualHost>#local3.global_domain.ru
<VirtualHost "<EXT_IP>:80">
ServerAdmin adm@localhost
DocumentRoot "/usr/local/www/data-dist/local3.global_domain.ru/"
ServerName local3.global_domain.ru
ErrorLog /var/log/httpd/local3.global_domain.err
CustomLog /var/log/httpd/local3.global_domain.log combined
LogLevel info<Directory "/usr/local/www/data-dist/local3.global_domain.ru/">
AllowOverride All
Order Deny,Allow
Deny From All
Allow From 192.168.0.
#Allow From All
</Directory>
EnableSendfile Off
</VirtualHost>PS Та же проблема была в топике http://www.opennet.me/openforum/vsluhforumID8/5864.html но решения не было написано
Начни с просмотра логов!
И не трать драгоценное время людей.
>Начни с просмотра логов!
>И не трать драгоценное время людей.Может я не ясно написал? "При запуске апача ошибок не возникает" - это значит что ни в консоли ни в логах ошибок нету. Я не трачу ваше драгоценное время, не понятно зачем вы вообще отвечали на топик. Я задаю вопрос тем кто сталкивался с данной проблемой, а не дилетантам вроде вас.
> обязательно на каком-то вываливается ошибка "Forbidden".Это твои слова?
Дак посмотри access.log и error.log в момент форбидена, а не при старте апача.
Делитант ))
>> обязательно на каком-то вываливается ошибка "Forbidden".
>
>Это твои слова?
>Дак посмотри access.log и error.log в момент форбидена, а не при старте
>апача.
>Делитант ))Естественно, эта ошибка есть в логе (httpd.err). Пишется она так:
[error] [client 192.168.0.10] client denied by server configuration: /usr/local/www/data-dist/
Я даже знаю на какой строчке конфига сервер вываливает Forbidden:
/usr/local/etc/apache22/extra/httpd-vhosts.conf#Default, чтобы не заходили по <EXT_IP>
<VirtualHost "<EXT_IP>:80">
ServerAdmin adm@localhost
DocumentRoot "/usr/local/www/data-dist/"<Directory "/usr/local/www/data-dist/">
Options All
AllowOverride All
Order Deny,Allow
--> Deny From All <-----
</Directory>
</VirtualHost>1) Ошибка всегда возникает на разном вирт. хосте - нет никакой закономерности, как это можно объяснить?
2) "Проблемную" строчку убрать нельзя, т.к.
а) нужно чтобы не возможно было заходить на вирт. хосты как http://EXT_IP/local1
б) нужно чтобы доступ к был вирт. хостам только по hostname.
1) Ошибка всегда возникает на разном вирт. хосте - нет никакой закономерности, как это можно объяснить?
2) "Проблемную" строчку убрать нельзя, т.к.
а) нужно чтобы не возможно было заходить на вирт. хосты как http://EXT_IP/local1
б) нужно чтобы доступ к был вирт. хостам только по hostname.
самому то не смешно?
Типа я наступаю на грабли, но я немагу убрать грабли, ведь тогда я перестану наступать на грабли!1) почему вообще левый хост вдруг лезет в дефолтную секцию? )
2) Почему ВООБЩЕ У ТЕБЯ КАТАЛОГИ ВНУТРИ СЕКЦИЙ ПЕРЕСЕКАЮТСЯ? Отдельный не судьба сделать, тем более что у тебя верхнего уровня каталог идет с правами дени. А мыслю я так - некоторые запросы проскакивают по айпи - без доменного имени. Есно они попадают в дефлотную секцию и есно в дени.З.Ы. вы батенько перемудили однако )
>самому то не смешно?Не смешно (а почему должно быть?)
>Типа я наступаю на грабли, но я немагу убрать грабли, ведь тогда
>я перестану наступать на грабли!Это не грабли, так должно быть. Это нормальная настройка виртульных name-based хостов, почитайте для начала документацию.
>1) почему вообще левый хост вдруг лезет в дефолтную секцию? )
Мне это тоже интересно, почему апач направляет запрос в дефолтную секцию, когда по настройкам должен направлять в правильную..
>2) Почему ВООБЩЕ У ТЕБЯ КАТАЛОГИ ВНУТРИ СЕКЦИЙ ПЕРЕСЕКАЮТСЯ? Отдельный не судьба
>сделать, тем более что у тебя верхнего уровня каталог идет с
>правами дени.Что значит каталоги внутри секций?
Есть каталог /usr/local/www/data-dist/
в нем находятся каталоги виртуальных хостов:
/usr/local/www/data-dist/local1
/usr/local/www/data-dist/local2
/usr/local/www/data-dist/local3
/usr/local/www/data-dist/global
Где тут что пересекается? Что здесь неправильного?>А мыслю я так - некоторые запросы проскакивают по
>айпи - без доменного имени. Есно они попадают в дефлотную секцию
>и есно в дени.Каким образом если к серверу обращаешься как local1.domain.ru вдруг заменится на <EXT_IP>?
Первый раз с таким сталкиваюсь. Всегда, значит, обращается как local1.domain.ru, а когда звезды не так расположены - как <EXT_IP>?! :)>З.Ы. вы батенько перемудили однако )
Не исключено, но настройка такого плана именно так описана в документации
P.S. Сейчас с теми же настройками все работает. Пробовал перезапускать апач - работает. Не знаю, надолго ли :(
Где то у тя лажа - первую секцию - найух.
Если уж очень хочется - проставь туда левый путь, НЕ НАДО ДАЛЕАТЬ каталоги пересекающимися.>Что значит каталоги внутри секций?
>Есть каталог /usr/local/www/data-dist/
>в нем находятся каталоги виртуальных хостов:
>/usr/local/www/data-dist/local1
>/usr/local/www/data-dist/local2
>/usr/local/www/data-dist/local3
>/usr/local/www/data-dist/global
>Где тут что пересекается? Что здесь неправильного?ну не надо вообще иметь привычки пихать корневыой каталог в настройки в-хостов
в твоем случае /usr/local/www/data-dist/
каждомы в-хосту свой каталог
апач все права дает по ерархии - права на вложенные каталоги точно такиеже как и у родителя, если для вложженноных конкретных каталогом не прописаны другие.
возможно виной тому не конфигурация, а нагрузка на процессор. В любом случае попробуй версию апача, которая еще тухлятиной не попахивает (2.2.9 доступна на текущий момент).
> возможно виной тому не конфигурация, а нагрузка на процессор. В любом случае
> попробуй версию апача, которая еще тухлятиной не попахивает (2.2.9 доступна на
> текущий момент).Тема бородатая, но все-тки отпишусь.
Не знаю, поможет кому - или нет.
Была необходимость сделать аналогичную конфигурацию - получилось сделать только без дефолтного хоста, т.е. запросы на дефолтный хост заворачиваются на первый виртуальный - тогда все работает нормально - иначе, периодически какой-нибудь из хостов пытается завернуться на локальный. причину так и не выяснил.