Apache: клиент запрещен конфигурацией сервера
Я
[Вт апр 24 12: 12: 55 2012] [ошибка] [клиент 127.0.0.1] клиент отклонен конфигурацией сервера: / labs / Projects / Nebula / bin/
моя структура каталогов выглядит так (я использую Symfony 2, должна быть аналогичной структурой для других веб-фреймворков)
У меня есть установка vhosts, например:
<VirtualHost nebula:80>
DocumentRoot "/labs/Projects/Nebula/web/"
ServerName nebula
ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>
<Directory "/labs/Projects/Nebula/">
Options All
AllowOverride All
Order allow,deny
Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>
интересно, в чем проблема и как это исправить?
9 ответов:
Apache 2.4.3 (или, может быть, чуть раньше) добавил новую функцию безопасности, которая часто приводит к этой ошибке. Вы также увидите сообщение журнала формы "клиент запрещен конфигурацией сервера". Для доступа к каталогу этой функции требуется удостоверение авторизованного пользователя. Он включен по умолчанию в httpd.conf, который поставляется с Apache. Вы можете увидеть включение функции с директивой
Require all denied
Это в основном говорит, чтобы запретить доступ для всех пользователей. Исправить это проблема, либо удалите директиву denied (или гораздо лучше) добавьте следующую директиву в каталоги, к которым вы хотите предоставить доступ:
Require all granted
а в
<Directory "your directory here"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory>
ОК я использую неправильный синтаксис, я должен использовать
Allow from 127.0.0.1 Allow from ::1 ...
в Apache 2.4 старый синтаксис авторизации доступа был устаревшим и заменен новой системой с использованием требуются.
то, что вы хотите, это что-то вроде следующего:
<Directory "/labs/Projects/Nebula/"> Options All AllowOverride All <RequireAny> Require local Require ip 192.168.1 </RequireAny> </Directory>
Это позволит соединения, которые происходят или от локального хоста или С ip-адресов, которые начинаются с "192.168.1".
также доступен новый модуль, который позволяет Apache 2.4 распознавать старый синтаксис, если вы не хочу, чтобы обновить конфигурацию сразу:
sudo a2enmod access_compat
можно попробовать изменить "разрешить от 127.0.0 192.168.1 ::1 localhost" на "разрешить все". Если это устраняет вашу проблему, вам нужно меньше ограничивать, где контент может быть запрошен у
вот мой файл виртуального хоста symfony 1.4 на debian, который отлично работает.
<Directory /var/www/sf_project/web/> Options All Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
Если вы не хотите ограничивать доступ к определенному диапазону ip, например localhost используйте это:
Allow from 127.0.0.0/8
The mod_authz_host отвечает за фильтрацию диапазонов ip. Вы можете посмотреть подробные вещи там.
но, возможно, проблема может быть связана с какой-то неправильной в вашей "помощью apache2.конф".
на какой ОС находится Апач работает?
Если у вас возникли
Allow from All
в httpd.conf затем убедитесь, что у нас есть
.phpкак в приведенной ниже строке в httpd.conf
DirectoryIndex index.html index.php