Apache2: 'AH01630: клиент отклонен конфигурацией сервера'

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

AH01630: client denied by server configuration

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

sudo chmod 777 -R *

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

<VirtualHost *:80>
ServerAdmin webmaster@localhost

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>

18 ответов


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

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

проверить http://httpd.apache.org/docs/2.4/upgrading.html#access

в 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)


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

обновление

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

порядок, разрешить,запретить


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


Я сделал те же изменения, которые 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>

это сводило меня с ума в течение полутора дней, но я нашел решение, если все другие решения были неудачно опробованы.

Это для macOS.

  • перейти к монитору активности (spotlight search for: activity)
  • в activity monitor поиск httpd, который является сервисом Apache
  • выберите тот, который принадлежит root и нажмите X в левом верхнем углу, чтобы закрыть его.

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


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

возьмите переменные среды, чтобы ${APACHE_LOG_DIR} действительно работал...

source /etc/apache2/envvars

затем хвост и смотреть...

tail -f ${APACHE_LOG_DIR}/error.log

проблема в VirtualHost, но probablely не

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

подтвердить код config правильно, вот правильный образец enter image description here


Я решил себя после того, как провел пару часов.

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

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

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

  1. добавил <VirtualHost *:80>
  2. добавил
    Индексы Опции FollowSymLinks
    AllowOverride все
    Разрешить от всех

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


кто-нибудь думал о том, что WAMP server по умолчанию не включает . Мой подход состоит в том, чтобы удалить Примечание ниже

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

на . Это все.


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

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

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

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

Если у вас есть хост 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

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

Require local

С

Require all granted



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

Include conf/extra/httpd-vhosts.conf

в моем случае,

Я использую macOS Mojave (Apache/2.4.34). Возникла проблема в настройках виртуального хоста в /etc/apache2/extra / httpd-vhosts.файл conf. после добавления необходимого тега каталога моя проблема исчезла.

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

надеюсь, что полная структура настройки виртуального хоста спасет вас.

<VirtualHost *:80>
    DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
    ServerName project.loc

    <Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
        Require all granted
    </Directory>

    ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
    CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
</VirtualHost>

все, что вам нужно сделать, Замените MainProjectFolderName вашим точным ProjectFolderName.


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

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

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

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


один неясный (только что с ним разобрался), но возможно, причиной этого является внутреннее правило mod_rewrite, в основном файле конфигурации (нет .htaccess), который записывает путь, который существует в корне файловой системы сервера. Скажем, у вас есть /media каталог на вашем сайте, и вы переписываете что-то вроде этого:

RewriteRule /some_image.png /media/some_other_location.png

Если у вас /media каталог в корневом каталоге вашего сервера будет предпринята попытка перезаписи (что приведет к ошибке отказа в доступе), а не к каталог вашего сайта, так как корень файловой системы проверяется сначала mod_rewrite, для существования первого каталога в пути, перед каталогом вашего сайта.


проблема может быть в том, что директива не находится в

https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives

на директиву можно ссылаться в разделе , или , а также .htaccess файлы для управления доступом к определенным частям сервера. Доступ можно контролировать на основе имени хоста клиента или IP-адреса.


У меня есть еще один, который может быть кому-то полезен. Получил то же сообщение об ошибке после обновления с версии PHP 5.6 => 7.0. Мы изменили настройки загрузки PHP и забыли изменить после копирования. Несмотря на то, что я не загружал изображения в то время, Silverstripe (наша CMS) отказывалась сохранять и бросать эту ошибку. Увеличил размер загрузки изображения, и это сработало сразу.


при использовании Ubuntu проверьте, включен ли модуль CGI. Если нет:

sudo a2enmod cgi