Ответ 1
OK Я использую неправильный синтаксис, я должен использовать
Allow from 127.0.0.1
Allow from ::1
...
Я получаю
[Tue Apr 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>
Интересно, в чем проблема и как это исправить?
OK Я использую неправильный синтаксис, я должен использовать
Allow from 127.0.0.1
Allow from ::1
...
Apache 2.4.3 (или, возможно, чуть раньше) добавил новую функцию безопасности, которая часто приводит к этой ошибке. Вы также увидите сообщение журнала формы "клиент, отказавшийся от конфигурации сервера". Эта функция требует авторизации пользователя для доступа к каталогу. Он включен DEFAULT в 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>
В 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
mod_authz_host отвечает за фильтрацию диапазонов ip. Вы можете найти там подробные вещи.
Но может быть, проблема может быть связана с какой-то неправильной конфигурацией в вашем "apache2.conf".
В какой ОС работает apache?
если у вас есть
Allow from All
в httpd.conf, тогда убедитесь, что у нас есть
index.php
как в следующей строке в httpd.conf
DirectoryIndex index.html index.php
У меня была проблема с Vesta CP, и для меня трюк был удален .htaccess и снова попытался получить доступ к любому файлу.
Это привело к восстановлению файла .htaccess, а затем мне удалось получить доступ к моим файлам.
В моем случае ключ был:
AllowOverride All
в определении vhost. Надеюсь, это поможет кому-то.
Этот код работал у меня.
<Location />
Allow from all
Order Deny,Allow
</Location>
Надеюсь, что это поможет другим людям.