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>


610   18  

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.конф.

<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, он просто работал, я думаю, он перезапустился сам, когда я пошел на свой локальный хост, я честно не знаю, но я думаю, что проблема в том, что Apache фактически не перезапускается при использовании перезапуска apachectl или остановки или запуска. Надеюсь, это кому-то поможет.

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

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

source /etc/apache2/envvars

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

tail -f ${APACHE_LOG_DIR}/error.log

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

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

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

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

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

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

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

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

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

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

 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 директивы, упомянутые в других ответах имейте в виду, что несоответствующее регулярное выражение a 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

Comments

    Ничего не найдено.