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/
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.
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
Assurez-vous que l'utilisateur qui exécute le service httpd
a accès à ces répertoires.
"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 ' .
setenforce 0
rend le fichier accessiblesetenforce 0
rend à nouveau le fichier inaccessibleAlors à coup sûr, l'accès est interdit par SELinux quelles que soient les autorisations de fichier.
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.
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