На самом деле работать с виртуальными хостами (virtual hosts) на веб-сервере Apache2 несложно, но всё усложняет тот факт, что в интернете очень трудно найти внятную документацию или хорошие примеры настройки.
Наиболее вероятной проблемой, с которой Вы можете столкнулся при настройке виртуальных хостов, будет: ошибка Вашего браузера
Ошибка 403 при настройке virtual hosts может возникнуть по двум причинам.
Первая маловероятна в ОС Microsoft Windows (зато вероятна во всех *nix-оподобных осях) и заключается в том, что главный (корневой) путь, по которому расположен каждый документ виртуального хоста, должен быть Readable, Writable, and Executable (читаемый, записываемый и выполняемый) для пользователя веб-сервера httpd. В файле access_log в этом случае Вы можете наблюдать ошибку 403, хотя само сообщение, возвращаемое браузером не будет содержать код 403, а выглядеть, например, следующим образом:
You don't have permission to access /index.html on this server.
Мои коллеги сталкивались с этим уже несколько раз именно из-за того, что родительская директория для «виртуальных документов» не имела прав на Выполнение файлов для пользователя 'www' (под которым был запущен веб-сервер). К сожалению, в лог файле ошибок сервера об этом не будет явно указано и Вы можете потратить много времени на правку Вашего конфигурационного файла httpd.conf, поскольку будете думать, что это проблема в конфигурации веб-сервера.
Вторая причина действительно заключается в конфигурации, а именно в том, что Вы забыли разрешить доступ к каталогу в файле httpd.conf. В этом случае access_log покажет Вам ошибку 403, да и сам веб-сервер Aapche2 иногда выдаёт эту же ошибку Вашему браузеру:
Странно, что в некоторых случаях он выдает сообщение Forbidden без кода "403".
You don't have permission to access /index.html on this server.
В Вашем error_log для каждой попытки доступа к любому файлу в каталоге «виртуального хоста» веб-сервера будет писаться примерно такое сообщение:
В данном случае, проблема заключается в том, что в файле extra/httpd-vhosts.conf (либо httpd.conf – для MS Windows) отсутствует директива, разрешающая доступ к каталогу, в котором лежит файл.
Чтобы его разрешить, Вам нужно добавить в конфигурационный файл:
<directory /vhost_document_root> allow from all <directory>
Ниже приведен пример, как это должно выглядеть в целом:
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
полезная статья)
RSS feed for comments to this post