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:

[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 remix remix 4096 16 серпня 09:36 / home / remix. Я спробував команду все одно, без ефекту.
RemiX

Ах, не можу виграти їх усіх.
Майкл Хемптон

3

Переконайтеся, що користувач, який працює у httpdслужбі, має доступ до цих каталогів.


Я не впевнений, хто користувач для httpd або як перевірити, але кожен може прочитати (користувач / група / інше).
RemiX

Перевірте Userпараметр httpd.conf на парам.
cpt.Buggy

1
Гаразд, це говорить "Користувач нікого" та "Групова група". Я спробував змінити його на "Ремікс користувача" (який є власником папки), але навіть це не допоможе.
RemiX

1

"клієнт відмовлений конфігурацією сервера" означає, що сам сервер Linux забороняє доступ до файлу, а не Apache.

Якщо надання доступу через зміну дозволів / членства / членства в групі не вирішує проблему, причиною маршруту може бути SELinux, забороняючи доступ до будь-якої папки, яка не має відповідного контексту SE Linux, як пояснено у розділі "Переміщення Apache DocumentRoot під Selinux" .

  • Якщо тимчасово відключити SELinux, зробивши setenforce 0цей файл доступним
  • У той час як повторне включення SELinux, роблячи, setenforce 0знову робить файл недоступним

Тоді напевно SELinux забороняє доступ, незалежно від дозволів на файли.


0

Інший простий (але хитрий gotcha), який може спричинити цю проблему для людей, - це те, коли каталоги користувачів не знаходяться в / 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 DUH!

напр. ~ 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.