Вопрос по .htaccess, apache – Apache: клиент отклонен конфигурацией сервера

148

я получаю

[Tue Apr 24 12:12:55 2012] [error] [client 127.0.0.1] client denied by server configuration: /labs/Projects/Nebula/bin/

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

enter image description here

У меня есть Vhosts настройки как:

<code><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>
</code>

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

@JiewMeng: вы, вероятно, должны принять ответ Фила. Кажется, проблема сmost Apache устанавливается сегодня (Apache 2.4). Благодарю. dotancohen

Ваш Ответ

9   ответов
1

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

Allow from All

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

index.php

как в строке ниже в httpd.conf

DirectoryIndex index.html index.php
0

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

AllowOverride All

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

4

вой системой, использующейRequire.

То, что вы хотите, это что-то вроде следующего:

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

Это позволит соединения, которые происходятeither от местного хозяинаor с IP-адресов, которые начинаются с "192.168.1".

Также доступен новый модуль, который позволяет Apache 2.4 распознавать старый синтаксис, если вы не хотите сразу обновлять свою конфигурацию:

sudo a2enmod access_compat
1

который работает нормально.

  <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".

На какой ОС работает апач?

1

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

11

Allow from 127.0.0.1
Allow from ::1
...
Для apache & gt; 2.4 одно это не могло работать для меня. Но это сработало в сочетании сRequire all grantedкак предложено @ Phil-L
-3

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

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

Это позволяет apache получить доступ к каждому файлу на компьютере. Очень плохо для безопасности.
Это абсолютно не рекомендуется добавлять в конфигурацию apache.
1

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

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

394

возможно, чуть раньше) добавлена новая функция безопасности, которая часто приводит к этой ошибке. Вы также увидите сообщение журнала в форме «клиент отклонен из-за конфигурации сервера». Эта функция требует авторизованного пользователя для доступа к каталогу. Он включен DEFAULT в httpd.conf, который поставляется вместе с Apache. Вы можете увидеть включение функции с помощью директивы

Require all 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>
Также проверьте вашhtaccess на пути, который вы пытаетесь получить доступ
Моя среда не работала, пока я не решил использовать решение @MarkHu Satisfy Any. Спасибо!!!
Смотрите также:httpd.apache.org/docs/current/upgrading.html#access
может также понадобиться добавитьSatisfy Any послеRequire all granted
@MarkHu - можете ли вы объяснить возможную необходимостьSatisfy any в данном контексте? Я спрашиваю, потому что я выдернул здесь свои волосы и добавил, что у меня все работает. Странно то, что приложение работало с существующей записью vhost до недавнего обновления Apache до2.4.9, Еще раз более странно то, что он отлично работает на другом сервере с теми же версиями app / vhost и Apache / PHP. Хотя разные серверы - AWS Linux и Ubuntu 14.10 соответственно. Странно ... Я думаю, мне нужно сравнить каждый серверhttpd.conf файлы, чтобы увидеть, если есть разница конфигурации ...

Похожие вопросы