Apache: клиент отказался от конфигурации сервера

Я получаю

[Tue Apr 24 12:12:55 2012] [ошибка] [клиент 127.0.0.1] клиент отказался от конфигурации сервера:/labs/Projects/Nebula/bin/

Моя структура каталогов выглядит как (я использую Symfony 2, должна быть аналогичной структурой для других веб-фреймворков)

enter image description here

У меня есть установка 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>

Интересно, в чем проблема и как это исправить?

Ответ 1

OK Я использую неправильный синтаксис, я должен использовать

Allow from 127.0.0.1
Allow from ::1
...

Ответ 2

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>

Ответ 3

В 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

Ответ 4

Можете ли вы попробовать изменить "Разрешить с 127.0.0 192.168.1:: 1 localhost" на "Разрешить от всех". Если это исправляет вашу проблему, вам нужно меньше ограничиться тем, где можно запросить контент из

Ответ 5

Здесь мой файл виртуального хоста 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?

Ответ 6

если у вас есть

Allow from All

в httpd.conf, тогда убедитесь, что у нас есть

index.php

как в следующей строке в httpd.conf

DirectoryIndex index.html index.php

Ответ 7

У меня была проблема с Vesta CP, и для меня трюк был удален .htaccess и снова попытался получить доступ к любому файлу.

Это привело к восстановлению файла .htaccess, а затем мне удалось получить доступ к моим файлам.

Ответ 8

В моем случае ключ был:

AllowOverride All

в определении vhost. Надеюсь, это поможет кому-то.

Ответ 9

Этот код работал у меня.

 <Location />
Allow from all
Order Deny,Allow
</Location> 

Надеюсь, что это поможет другим людям.