Apache «Клиент отклонен конфигурацией сервера», несмотря на то, что разрешил доступ к каталогу (конфигурация vhost)


38

в Apache на Ubuntu я настроил vhost, но в браузере я получаю сообщение об ошибке «403 Доступ запрещен»; в журнале написано " Клиент отклонен конфигурацией сервера: / home / remix / ".

Ища решение онлайн, я нашел много сообщений о доступе к каталогу (Разрешить от всех и т. Д.), Но, насколько я знаю, я уже сделал это. В httpd-vhosts.conf есть следующий код:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Я также добавил

127.0.0.1    testproject

в файл / etc / hosts.

Кроме того, папка / home / remix / содержит файл index.html, а vhosts включен в httpd.conf.

Есть что-то, чего я не вижу?

Редактировать: это Apache error_log запись:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

Что в журнале ошибок Apache?
Шейн Мэдден

Ах, я думал, что что-то забыл ... Я добавил это к оригинальному сообщению.
RemiX

Какую версию Apache вы используете?
Шейн Мэдден

Apache / 2.4.2 (Unix)
RemiX

Ответы:


65

Измените конфигурацию авторизации:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... до версии Apache 2.4 того же самого.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

Просмотрите обзорный документ по обновлению для получения информации о других изменениях, которые вам, возможно, придется внести, и имейте в виду, что большинство примеров конфигурации и помощи, которые вы найдете там в Google (а также на этом сайте), относятся к 2.2.


2
Если бы у меня было время, я бы записал ошибку об этом, потому что httpd -t говорит, что нет проблем с использованием более старого синтаксиса, как и httpd -S. На мой взгляд, весь смысл проверки конфигурации заключается в том, что она должна указывать на проблемы! ... Если у вас есть каталог, на который вы ссылаетесь без этого, он не будет работать - просто так. ... Недурно ответ.
Ричард Т

4

Проверьте разрешения на каталог. Могу поспорить, что он запрещает доступ кому-либо, кроме вас, например:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

Если вы видите drwx------точно, то это так. Исправьте это, запустив:

chmod a+x /home/remix

Я вижу: drwxrwxr-x 2 ремикс ремикс 4096 16 августа 09:36 / home / remix. Я все равно попробовал команду, но безрезультатно.
RemiX

Ах, я не могу их всех победить.
Майкл Хэмптон

3

Убедитесь, что пользователь, который запускает httpdслужбу, имеет доступ к этим каталогам.


Я не уверен, кто пользователь для httpd или как проверить, но каждый может читать (пользователь / группа / другие).
RemiX

Проверьте httpd.conf для Userпараметра.
cpt.Buggy

1
Хорошо, это говорит «Пользователь никто» и «Группа nogroup». Я попытался изменить его на «User remix» (который является владельцем папки), но даже это не поможет.
RemiX

1

«Клиент запрещен конфигурацией сервера» означает, что сам сервер Linux запрещает доступ к файлу, а не Apache.

Если предоставление доступа через изменение прав доступа / принадлежности / членства в группе не решает проблему, причиной маршрута может быть SELinux, запрещающий доступ к любой папке, которая не имеет соответствующего контекста SE Linux, как объяснено в разделе «Перемещение Apache DocumentRoot под Selinux» .

  • Если временно отключить SELinux, setenforce 0файл становится доступным
  • Принимая во внимание, что повторное включение SELinux setenforce 0делает файл снова недоступным

Тогда, безусловно, SELinux запрещает доступ к файлам.


0

Еще одна простая (но хитрая ошибка), которая может вызвать эту проблему у людей, - это когда пользовательские каталоги не находятся в / home / *, а где-то еще, например, / nethome / *

Прилагаемый userdir.conf содержит что-то вроде этого: (но с Userdir: отключен)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Спецификация Справочника предполагает ~ user == / home / user. Просто измените или добавьте спецификацию каталогов, где на самом деле находятся домашние каталоги пользователей.

Довольно очевидно, но мне потребовалось время, чтобы выяснить !! :-P ДУХ!

например, ~ user == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

Смотрите также более открытую авторизацию в этом Справочнике в целом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.