Apache2: «AH01630: клиент отказался от конфигурации сервера»

354

Я получаю эту ошибку при попытке доступа к localhost через браузер.

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>

    

задан Hazem Hagrass 23.08.2013 в 02:13
источник
  • Используете ли вы новый Apache 2.4? Какой путь дает эту ошибку? –  aadel 24.08.2013 в 00:45
  • Кажется, вам нужно обновить свои конфигурации. Взгляните сюда: httpd.apache.org/docs/2.4/upgrading.html#run-time –  aadel 24.08.2013 в 10:32
  • Пожалуйста, взгляните на это: dabase.com/blog/AH01630:_client_denied_by_server_configuration –  Christian Müller 22.10.2013 в 16:37
  • chmod 777 - очень плохая привычка, даже если (предположительно) используется только в примерах. –  Antonis Christofides 14.01.2015 в 17:02
  • Где элемент VirtualHost закрыт? –  Karl Richter 16.02.2015 в 22:04
Показать остальные комментарии

13 ответов

645

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

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

Ознакомьтесь с ссылкой

  

В 2.2, управление доступом на основе имени хоста клиента, IP-адреса и других   характеристики запросов клиентов выполнялись с использованием директив   Заказ, Разрешить, Отклонить и Удовлетворить.

     

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

Новая директива Требовать :

2.2 конфигурация:

Order allow,deny
Allow from all

2.4 конфигурация:

Require all granted

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

    
ответ дан Jayakumar Bellie 25.10.2013 в 13:37
  • Работы OSX 10.10 Yosemite с использованием Apache 2.4 –  Matthew Herbst 05.08.2015 в 23:36
  • Конфигурация того, что (то есть, где «Требуется все предоставленное», идет? В каком-то файле .conf?) –  Alexis 17.12.2015 в 00:59
  • @ Каталог (или местоположение) Alexis. См. Снимок экрана в следующем ответе. –  strangeman 24.12.2015 в 03:02
  • В моем случае у меня есть ошибка в пулах DocumentRoot и <Directory>. –  Roman Grinyov 03.01.2017 в 21:19
  • Одно замечание: если вы ссылаетесь на конфигурацию в Интернете, скорее всего, они использовали оба варианта Order allow, deny ... и require all given. Это не сработает. Это зависит только от вашей версии. Это то, что мешало мне сначала решить мою проблему. –  Vishnu Narang 24.04.2017 в 19:26
Показать остальные комментарии
287

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

Обновление

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

  

Разрешить заказ, deny

    
ответ дан valera5505 13.11.2013 в 11:32
  • Работал для меня, как только я удалил «Разрешить заказ», также отрицаю строку. –  kasperd 09.08.2014 в 13:21
  • Требовать, чтобы все предоставленные сделали это для меня, спасибо! –  FloatingRock 16.09.2014 в 22:24
  • Внимание: при использовании HTTPS, настраивая VirtualHost для порта 443, мне пришлось реплицировать те же конфигурации <Location / media> Требовать все предоставленные </Location> по умолчанию-ssl.conf для загрузки моего CSS. (Моя проблема заключалась в том, что страница входа была доступна, но CSS и другие медиафайлы не были загружены ...) –  yuric 15.06.2015 в 23:00
  • Работы OSX 10.10 Yosemite с использованием Apache 2.4 –  Matthew Herbst 05.08.2015 в 23:36
  • Я единственный, кто HATES, когда кто-то нарушает конфигурации Apache без вывода в журнале. (Эй, мальчики, «Разрешить от всех» ушли на пенсию, потому что ... причины ...) –  Warren P 27.01.2016 в 15:46
23

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

ответ дан Tim 02.11.2013 в 09:34
  • В частности, я обнаружил, что это была моя проблема, потому что в моем объявлении DocumentRoot у меня не было следов косой черты, но я использовал ее в блоке <Directory>. У меня также были некоторые различия в делах. Как только я сделал эти два значения углеродными копиями друг друга (без конечной косой черты), он работал отлично. –  Adam Tuttle 20.03.2015 в 05:56
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>
    
ответ дан K.M. 10.09.2014 в 16:08
10

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

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

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

ответ дан RAC 15.01.2015 в 23:24
  • После нескольких часов впустую это то, что тоже решило мои проблемы. –  ever.wakeful 07.02.2015 в 06:07
4

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

Возьмите переменные окружения, поэтому $ {APACHE_LOG_DIR} будет работать ...

source /etc/apache2/envvars

Затем хвост и часы ...

tail -f ${APACHE_LOG_DIR}/error.log
    
ответ дан Shylo Hana 23.08.2013 в 02:39
  • Это ошибка из журналов: «AH01630: клиент, отказавшийся от конфигурации сервера» –  Hazem Hagrass 24.08.2013 в 00:26
  • Вероятно, вам захочется проверить это: httpd.apache.org/docs/2.4/upgrading.html#access и это: stackoverflow.com/questions/12759854/... –  Shylo Hana 27.08.2013 в 00:56
  • Если вы добавите отладку LogLevel в VirtualHost, это хороший совет, так как вы увидите строки типа «Требовать все отрицание: отказано» и «<Требование>: отклонено» (т.е. гораздо более полезно, чем просто «клиент отказался» по конфигурации сервера ", поскольку он фактически сообщает вам, какая конфигурация!) –  Darren Cook 24.04.2014 в 03:27
3

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

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

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

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

  1. добавлено <VirtualHost *:80>
  2. добавлен
    Параметры индексов FollowSymLinks
    AllowOverride all
    Разрешить все

, тогда, наконец, я только что загрузил vm ..

    
ответ дан Giri Babu 08.12.2015 в 19:39
3

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

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

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

    
ответ дан Heier 05.04.2016 в 08:29
  • +1 Это сработало и для меня, но, возможно, лучшим решением является сохранение файла conf / extra / httpd-vhosts.conf и его замена. Требовать локальный с требованием всех предоставленных –  Alex Pandrea 22.06.2017 в 12:00
2

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

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

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

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
    
ответ дан RyanNerd 07.09.2016 в 22:00
2

Проблема в VirtualHost, но , вероятно, не

  

Требовать все предоставленные

Подтвердите ваш config правильно, вот правильный пример     

ответ дан Albert.Qing 25.08.2017 в 09:18
1

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

Кроме того, иногда полезно проверять разрешения как пользователя apache:

# 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
    
ответ дан Putnik 04.11.2016 в 15:39
1

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

Require local

с

Require all granted



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

Include conf/extra/httpd-vhosts.conf
    
ответ дан Alex Pandrea 22.06.2017 в 12:07
0

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

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

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

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

    
ответ дан try-catch-finally 16.02.2018 в 08:00