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 147

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

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

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

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

AllowOverride All

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

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

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

надеюсь, это поможет другим