web-dev-qa-db-fra.com

Apache "Client refusé par la configuration du serveur", malgré l'autorisation d'accès au répertoire (configuration vhost)

dans Apache sur Ubuntu, j'ai configuré un vhost, mais dans le navigateur, je reçois toujours une erreur "403 Accès interdit"; le journal indique "Client refusé par la configuration du serveur:/home/remix /".

En recherchant la solution en ligne, j'ai trouvé de nombreux articles sur l'accès au répertoire (Autoriser de tous, etc.), mais pour autant que je sache, je l'ai déjà fait. Dans httpd-vhosts.conf il y a le code suivant:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

J'ai aussi ajouté

127.0.0.1    testproject

dans le fichier/etc/hosts.

De plus, le dossier/home/remix/contient un fichier index.html et les vhosts sont activés dans httpd.conf.

Y a-t-il quelque chose que je ne vois pas?

Edit: Ceci est l'entrée 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/
42
RemiX

Modifiez votre configuration d'autorisation:

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

... à la version Apache 2.4 du même.

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

Consultez le document de présentation de la mise à nivea pour obtenir des informations sur les autres modifications que vous pourriez avoir à apporter - et sachez que la plupart des exemples de configuration et de l'aide que vous trouvez sur Google (ainsi que sur ce site) sont se référant à 2.2.

68
Shane Madden

Vérifiez les autorisations sur le répertoire. Je parierais qu'il est réglé pour refuser l'accès à quiconque sauf à vous-même, par exemple:

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

Si tu vois drwx------ exactement, c'est le cas. Corrigez-le en exécutant:

chmod a+x /home/remix
4
Michael Hampton

Assurez-vous que l'utilisateur qui exécute le service httpd a accès à ces répertoires.

3
cpt.Buggy

"client refusé par la configuration du serveur" signifie que le serveur Linux lui-même interdit l'accès au fichier, pas Apache.

Si fournir un accès en modifiant les autorisations/la propriété/l'appartenance au groupe ne résout pas le problème, la cause de l'itinéraire peut être SELinux interdisant l'accès à tout dossier qui n'a pas le contexte SE Linux approprié, comme expliqué dans 'Relocalisation d'un Apache DocumentRoot sous Selinux ' .

  • Si vous désactivez temporairement SELinux en faisant setenforce 0 rend le fichier accessible
  • Alors que réactiver SELinux en faisant setenforce 0 rend à nouveau le fichier inaccessible

Alors à coup sûr, l'accès est interdit par SELinux quelles que soient les autorisations de fichier.

2
Vincent

Un autre simple (mais astucieux piège) qui pourrait causer ce problème pour les gens est lorsque les répertoires utilisateur ne sont pas dans/home/* Mais ailleurs, par exemple/nethome/*

Le fichier userdir.conf fourni contient quelque chose comme ceci: (mais avec Userdir: désactivé)

$ 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>

La spécification d'annuaire suppose ~ user ==/home/user. Il vous suffit de modifier ou d'ajouter des spécifications d'annuaire pour savoir où se trouvent réellement les répertoires personnels des utilisateurs.

Assez évident mais cela m'a pris du temps à comprendre !! :-P DUH!

par exemple. ~ user ==/nethome/user

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

Voir également l'autorisation plus ouverte sur ce répertoire en général.

0
gaoithe

Dans mon cas, j'avais ajouté l'application (phpMemcacheAdmin) mais j'avais négligé d'ajouter les montages dans la pile de déploiement, donc ils n'étaient même pas là (trucs kubernetes) lors de son lancement. J'ai passé une heure à tripoter la suppression de barres obliques supplémentaires et la modification des autorisations et j'ai finalement pilonné et j'ai vu qu'ils n'étaient même pas là.

Si vous essayez de déployer dans k8s, vérifiez à nouveau que vous les avez (si vous utilisez hostPath):

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