Помилка 403 при роботі з віртуальними хостами на веб-сервері apache2

Насправді працювати з віртуальними хостами (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 do not 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 do not have permission to access /index.html on this server.

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

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

Нижче наведено приклад, як це має виглядати в цілому:


ServerName vhost1.example.com
ServerAlias ​​vhost1.example.com
DocumentRoot / var / www / vhosts / vhost1

allow from all

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

Сподіваюся даний матеріал Вам виявився корисним.

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