На самом деле работать с виртуальными хостами (virtual hosts) на веб-сервере Apache2 несложно, но всё усложняет тот факт, что в интернете очень трудно найти внятную документацию или хорошие примеры настройки.

Наиболее вероятной проблемой, с которой Вы можете столкнулся при настройке виртуальных хостов, будет: ошибка Вашего браузера

"HTTP 403 / client denied by server configuration error"


Ошибка 403 при настройке virtual hosts может возникнуть по двум причинам.

Первая маловероятна в ОС Microsoft Windows (зато вероятна во всех *nix-оподобных осях) и заключается в том, что главный (корневой) путь, по которому расположен каждый документ виртуального хоста, должен быть Readable, Writable, and Executable (читаемый, записываемый и выполняемый) для пользователя веб-сервера httpd. В файле access_log в этом случае Вы можете наблюдать ошибку 403, хотя само сообщение, возвращаемое браузером не будет содержать код 403, а выглядеть, например, следующим образом:

   Forbidden
   You don't have permission to access /index.html on this server.

Мои коллеги сталкивались с этим уже несколько раз именно из-за того, что родительская директория для «виртуальных документов» не имела прав на Выполнение файлов для пользователя 'www' (под которым был запущен веб-сервер). К сожалению, в лог файле ошибок сервера об этом не будет явно указано и Вы можете потратить много времени на правку Вашего конфигурационного файла httpd.conf, поскольку будете думать, что это проблема в конфигурации веб-сервера.

Вторая причина действительно заключается в конфигурации, а именно в том, что Вы забыли разрешить доступ к каталогу в файле httpd.conf. В этом случае access_log покажет Вам ошибку 403, да и сам веб-сервер Aapche2 иногда выдаёт эту же ошибку Вашему браузеру:

 HTTP 403 / client denied by server configuration error

Странно, что в некоторых случаях он выдает сообщение Forbidden без кода "403".

Forbidden
You don't have permission to access /index.html on this server.

В Вашем error_log для каждой попытки доступа к любому файлу в каталоге «виртуального хоста» веб-сервера будет писаться примерно такое сообщение:

[Fri Jan 13 06:04:09 2012] [error] [client 192.168.1.1] client denied by server configuration: /var/www/vhosts/vhost1/

В данном случае, проблема заключается в том, что в файле extra/httpd-vhosts.conf (либо httpd.conf – для MS Windows) отсутствует директива, разрешающая доступ к каталогу, в котором лежит файл.
Чтобы его разрешить, Вам нужно добавить в конфигурационный файл:



<directory /vhost_document_root>
allow from all
<directory>

Ниже приведен пример, как это должно выглядеть в целом:


   
<VirtualHost *>
    ServerName vhost1.example.com
    ServerAlias vhost1.example.com
    DocumentRoot /var/www/vhosts/vhost1
    <directory /var/www/vhosts/vhost1>
    allow from all
    </directory>
</VirtualHost>

К сожалению, файл httpd-vhosts.conf , который присутствует в Apache2 по-умолчанию, или документация по работе с VirtualHost в Apache2 не дают нам ни одного реально работающего примера на этот счет.

Надеюсь данный материал Вам оказался полезен.

Хороших Вам проектов!

Comments   

0 # :)Guest 2013-05-26 16:21
спасибо большое)
полезная статья)
Reply | Reply with quote | Quote | Report to administrator

Add comment


Security code
Refresh