Назад | Перейти на главную страницу

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

в Apache на Ubuntu я установил виртуальный хост, но в браузере все время выдает ошибку «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, а в httpd.conf включены vhosts.

Я чего-то не вижу?

Редактировать: Это запись 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/

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

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

... к версии того же Apache 2.4.

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

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

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

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

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

chmod a+x /home/remix

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

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

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

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

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

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

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

$ 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 ДУХ!

например ~ пользователь == / nethome / пользователь

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

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

В моем случае я добавил приложение (phpMemcacheAdmin), но не позаботился добавить монтирования в стек развертывания, поэтому их даже не было (материал kubernetes) при запуске. Я потратил час на то, чтобы удалить лишние косые черты и изменить разрешения, и, наконец, обнаружил, что их даже нет.

Если вы пытаетесь выполнить развертывание в k8s, дважды проверьте, есть ли они у вас (если вы используете hostPath):

...
    volumeMounts:
    - mountPath: /opt/phpMemcacheAdmin
      name: memcached-admin
...
  - hostPath:
      path: /...../opt/phpMemcacheAdmin
      type: ""
    name: memcached-admin