2013-08-23 2 views
348

Я получаю эту ошибку при попытке получить доступ к localhost через браузер.Apache2: 'AH01630: клиент, отказавшийся от конфигурации сервера'

AH01630: client denied by server configuration 

Я проверил мои разрешения папки сайта с помощью:

sudo chmod 777 -R * 

Вот мой конфигурационный файл:

<VirtualHost *:80> 
ServerAdmin [email protected] 

DocumentRoot /home/user-name/www/myproject 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride all 
    Allow from all 
</Directory> 

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

<Directory /home/user-name/www/myproject/> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
    Order allow,deny 
    Allow from all 
</Directory> 

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
<Directory "/usr/lib/cgi-bin"> 
    AllowOverride all 
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Order allow,deny 
    Allow from all 
</Directory> 

ErrorLog ${APACHE_LOG_DIR}/error.log 

# Possible values include: debug, info, notice, warn, error, crit, 
# alert, emerg. 
LogLevel warn 

CustomLog ${APACHE_LOG_DIR}/access.log combined 

Alias /doc/ "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride all 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 

+1

Вы используете новый Apache 2.4? Какой путь дает эту ошибку? – aadel

+0

Да, Apache 2.4, и это происходит, когда я пытаюсь перейти к любому файлу в каталоге приложения. –

+10

Кажется, вам нужно обновить свои конфигурации. Посмотрите здесь: http://httpd.apache.org/docs/2.4/upgrading.html#run-time – aadel

ответ

634

Если вы используете Apache 2.4

Вы должны проверить разрешить и отклонить правила

Отъезд http://httpd.apache.org/docs/2.4/upgrading.html#access

В 2.2, управление доступом на основе клиента имя хоста, IP-адрес и другие характеристики клиентских запросов было сделано с помощью соответствующих директив Order, Allow, Deny и Удовлетворить.

В 2.4 такое управление доступом осуществляется так же, как и другие авторизации , с использованием нового модуля mod_authz_host.

Новая директива Require:

2,2 Конфигурация:

Order allow,deny 
Allow from all 

2,4 Конфигурация:

Require all granted 

Также не забудьте перезапустить сервер Apache после этих изменений (# service httpd restart)

+2

Работы OSX 10.10 Yosemite с использованием Apache 2.4 –

+2

Конфигурация * what * (т. Е. Где «Требуется все предоставленные»?) В каком-то файле .conf?) – Alexis

+1

@ Каталог (или местоположение) Alexis. См. Снимок экрана в следующем ответе. – strangeman

4

Если хвост журнал ошибок и перезагрузите страницу, вы должны увидеть дополнительную информацию о конкретной проблеме.

захватить переменные окружения так $ {APACHE_LOG_DIR} будет на самом деле работает ...

source /etc/apache2/envvars 

Тогда хвост и смотреть ...

tail -f ${APACHE_LOG_DIR}/error.log 
+4

Это ошибка из журналов: «AH01630: клиент отказался от конфигурации сервера» –

+0

Возможно, вам захочется проверить это: http://httpd.apache.org/docs/2.4/upgrading.html#access и это: http://stackoverflow.com/questions/12759854/client-denied-by-server-configuration-while-trying-to-use-git-http-backend-exe –

+4

Если вы добавите 'LogLevel debug' в VirtualHost, это добрый совет, так как вы увидите строки, такие как «Требовать все отрицание: denied» и «: denied» (то есть гораздо более полезный, чем просто «клиент, отказавшийся от конфигурации сервера», поскольку он на самом деле сообщает вам *, какую * конфигурацию!) –

23

Дважды проверьте правильность пути DocumentRoot. Это может вызвать эту ошибку.

+3

. Более конкретно, я обнаружил, что это была моя проблема, потому что у меня не было конечной косой черты в объявлении DocumentRoot, но я использовал ее в блоке ''. У меня также были некоторые различия в делах. Как только я сделал эти два значения углеродными копиями друг друга (без конечной косой черты), он работал отлично. –

285

Для всех каталогов написать Require all granted вместо Allow from all Something like

Update

Если выше не работает, то и удалить эту нижеуказанным строку:

Order Allow, Deny

+12

Работал для меня, как только я удалил строку 'Order allow, deny'. – kasperd

+16

'Требовать все предоставленные' сделал это для меня, спасибо! – FloatingRock

+0

Внимание: при использовании ** HTTPS **, конфигурировании ** VirtualHost ** для порта ** 443 **, мне пришлось реплицировать те же конфиги ' Требовать все предоставленные' on 'default-ssl. conf' для моего CSS для загрузки. (Моя проблема заключалась в том, что страница входа была доступна, но не загружались ни CSS, ни другие медиафайлы ...) – yuric

18

Я сделал те же самые изменения, что ravisorg предложил OSX 10.10 Yosemite, который обновляет Apache до версии 2.4. Ниже перечислены изменения, которые были добавлены в http.conf.

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

<Directory /Volumes/Data/Data/USER/Sites/> 
    AllowOverride none 
    Require all granted 
</Directory> 
10

Это сводило меня абсолютно орехи в течение дня полтора, но я нашел решение, если все другие решения безуспешно.

  • Перейти к Activity Monitor (поиск прожектора для: деятельности)
  • В деятельности поиска монитора для HTTPD, которая является услуга Apache
  • Выберите тот, который принадлежит корень и нажмите X в левом верхнем углу, чтобы закрыть Это.

В этот момент я немедленно прекратил получать 403 ошибки, и все началось, как и следовало ожидать. Странно, что мне даже не пришлось перезапускать apache, он просто сработал, я думаю, что он перезапустил себя, когда я пошел на свой локальный хост, я честно не знаю, но я думаю, проблема в том, что Apache не перезагружается при использовании перезапуска apachectl или остановить или начать. Надеюсь, это поможет кому-то.

+1

После нескольких часов впустую это то, что тоже решило мои проблемы. –

3

Я покончил с собой, проведя пару часов.

Я установил Apache/2.4.7 (Ubuntu) через coookbook в vagrant vm.

/etc/apache2/apache2.conf файл не имеет <VirtualHost *:80> элемент по умолчанию.

Я сделал два изменения, чтобы сделать это

  1. добавляемые <VirtualHost *:80>
  2. добавил
    Options Indexes FollowSymlinks
    AllowOverride все
    Позвольте от всех

, наконец, я просто загружаемой В.М. ..

3

Кто-нибудь думал о том, что по умолчанию сервер wamp не включает файл httpd-vhosts.conf. Мой подход заключается в удалении примечание ниже

conf 
    # Virtual hosts 
    Include conf/extra/httpd-vhosts.conf 

в httpd.conf файле. Вот и все.

+0

+1 Это работало и для меня, но, может быть, лучшим решением было сохранить файл conf/extra/httpd-vhosts.conf и заменить его 'Require local' на' Require all given' –

2

Это сводило меня с ума. Наконец выяснилось, в чем проблема: Я использовал прямые пути для журнала ошибок, и они были неправы.

Почему Apache дает неопределенное (и неправильное) сообщение об ошибке? Вместо этого используйте правильное и полезное сообщение об ошибке вроде: Path for ErrorLog "/wrong/path/and/filename.log" недействительно.

В любом случае, чтобы исправить убедитесь, что ваши директивы журнала ошибок выглядеть следующим образом:

ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined 
1

Если у вас есть HTTPS хозяин, то не забудьте сделать Require all granted изменения для Ssl конфигурации тоже.

Кроме того, иногда это полезно для проверки прав доступа как апач пользователя:

# ps -eFH | grep http # get the username used by httpd 
... 
apache 18837 2692 0 119996 9328 9 10:33 ?  00:00:00  /usr/sbin/httpd -DFOREGROUND 
# su -s/bin/bash apache # switch to that user 
bash-4.2$ whoami 
apache 
bash-4.2$ cd /home 
bash-4.2$ ls 
bash-4.2$ cd mysite.com 
bash-4.2$ ls 
bash-4.2$ cat file-which-does-not-work.txt 
1

Для WAMP 3 (Apache 2.4), к тому же положить сервер в Интернете, как описано в других ответах, в виртуальном хосте файл conf/extra/httpd-vhosts.conf
вам, возможно, потребуется заменить

Require local 

с

Require all granted 



Это применимо, если в httpd.conf у вас есть

Include conf/extra/httpd-vhosts.conf 
2

Проблема заключается в VirtualHost, но probablely не

Требуют все предоставлено

Confirm ваш конфигурация правильно, здесь правильно образец enter image description here

0

Кроме отсутствующего Order и Allow директивы, указанная в других ответах знать, что несоответствующее регулярное выражение DirectoryMatch директивы может также вызвать эту ошибку.

Если запрашиваемый путь /home/user-foo1bar/www/myproject/ folloing согласовань не будет соответствовать

<DirectoryMatch "/home/user-[a-z]+/www/myproject/"> 
... 
</DirectoryMatch> 

, таким образом, даже действительная конфигурация доступа может вызвать эту ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^