URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6030
[ Назад ]

Исходное сообщение
"Apache + Проблема с виртуальными хостами"

Отправлено melmaxnvk , 13-Окт-08 05:31 
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 но решения не было написано


Содержание

Сообщения в этом обсуждении
"Apache + Проблема с виртуальными хостами"
Отправлено Pahanivo , 13-Окт-08 15:00 
Начни с просмотра логов!
И не трать драгоценное время людей.


"Apache + Проблема с виртуальными хостами"
Отправлено melmaxnvk , 13-Окт-08 23:20 
>Начни с просмотра логов!
>И не трать драгоценное время людей.

Может я не ясно написал? "При запуске апача ошибок не возникает" - это значит что ни в консоли ни в логах ошибок нету. Я не трачу ваше драгоценное время, не понятно зачем вы вообще отвечали на топик. Я задаю вопрос тем кто сталкивался с данной проблемой, а не дилетантам вроде вас.


"Apache + Проблема с виртуальными хостами"
Отправлено Pahanivo , 14-Окт-08 00:24 
> обязательно на каком-то вываливается ошибка "Forbidden".

Это твои слова?
Дак посмотри access.log и error.log в момент форбидена, а не при старте апача.
Делитант ))


"Apache + Проблема с виртуальными хостами"
Отправлено melmaxnvk , 14-Окт-08 05:02 
>> обязательно на каком-то вываливается ошибка "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.


"Apache + Проблема с виртуальными хостами"
Отправлено Pahanivo , 14-Окт-08 15:27 
1) Ошибка всегда возникает на разном вирт. хосте - нет никакой закономерности, как это можно объяснить?
2) "Проблемную" строчку убрать нельзя, т.к.
    а) нужно чтобы не возможно было заходить на вирт. хосты как http://EXT_IP/local1
    б) нужно чтобы доступ к был вирт. хостам только по hostname.


самому то не смешно?
Типа я наступаю на грабли, но я немагу убрать грабли, ведь тогда я перестану наступать на грабли!

1) почему вообще левый хост вдруг лезет в дефолтную секцию? )
2) Почему ВООБЩЕ У ТЕБЯ КАТАЛОГИ ВНУТРИ СЕКЦИЙ ПЕРЕСЕКАЮТСЯ? Отдельный не судьба сделать, тем более что у тебя верхнего уровня каталог идет с правами дени. А мыслю я так - некоторые запросы проскакивают по айпи - без доменного имени. Есно они попадают в дефлотную секцию и есно в дени.

З.Ы. вы батенько перемудили однако )


"Apache + Проблема с виртуальными хостами"
Отправлено melmaxnvk , 14-Окт-08 15:51 
>самому то не смешно?

Не смешно (а почему должно быть?)

>Типа я наступаю на грабли, но я немагу убрать грабли, ведь тогда
>я перестану наступать на грабли!

Это не грабли, так должно быть. Это нормальная настройка виртульных 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. Сейчас с теми же настройками все работает. Пробовал перезапускать апач - работает. Не знаю, надолго ли :(


"Apache + Проблема с виртуальными хостами"
Отправлено Pahanivo , 14-Окт-08 23:27 
Где то у тя лажа - первую секцию - найух.
Если уж очень хочется - проставь туда левый путь, НЕ НАДО ДАЛЕАТЬ каталоги пересекающимися.

>Что значит каталоги внутри секций?
>Есть каталог /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/
каждомы в-хосту свой каталог
апач все права дает по ерархии - права на вложенные каталоги точно такиеже как и у родителя, если для вложженноных конкретных каталогом не прописаны другие.


"Apache + Проблема с виртуальными хостами"
Отправлено BigHo , 15-Окт-08 20:08 
возможно виной тому не конфигурация, а нагрузка на процессор. В любом случае попробуй версию апача, которая еще тухлятиной не попахивает (2.2.9 доступна на текущий момент).

"Apache + Проблема с виртуальными хостами"
Отправлено marakshin , 02-Ноя-11 09:51 
> возможно виной тому не конфигурация, а нагрузка на процессор. В любом случае
> попробуй версию апача, которая еще тухлятиной не попахивает (2.2.9 доступна на
> текущий момент).

Тема бородатая, но все-тки отпишусь.
Не знаю, поможет кому - или нет.
Была необходимость сделать аналогичную конфигурацию - получилось сделать только без дефолтного хоста, т.е. запросы на дефолтный хост заворачиваются на первый виртуальный - тогда все работает нормально - иначе, периодически какой-нибудь из хостов пытается завернуться на локальный. причину так и не выяснил.