web-dev-qa-db-fra.com

Apache VirtualHost 403 interdit

J'ai récemment essayé de configurer un serveur de test avec Apache. Le site doit être exécuté sous le domaine www.mytest.com. J'ai toujours une erreur 403 Forbidden. Je suis sur Ubuntu 10.10 Server Edition. La racine de la documentation se trouve sous le répertoire /var/www. Voici mes paramètres:

Contenu de/var/www

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

Contenu du fichier hôte sur le serveur (avec IP 192.168.2.5)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

configuration du site

<VirtualHost *>
ServerAdmin [email protected]
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/Apache2/mytest-error_log
CustomLog /var/log/Apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Je n'ai pas de fichier .htaccess dans la racine de la documentation. Les autorisations sont définies correctement (lisibles par www-data).

Si je tape l'adresse IP à partir de mon bureau, le site s'affiche correctement. J'ai changé le fichier hosts sur mon bureau pour qu'il pointe www.mytest.com sur l'IP du serveur. Quand je l'utilise, j'obtiens 403. Étant donné que de nombreuses fonctions de ce site sont sensibles au nom de site, je dois pouvoir accéder au site par le nom de domaine.

Une autre chose géniale est que, même si tous les fichiers journaux sont créés correctement, ils ne possèdent aucune information concernant cette erreur.

Je suis coincé. Quelqu'un peut aider?

112
Yuchen Wang

Apache 2.4.3 (ou peut-être un peu plus tôt) a ajouté une nouvelle fonctionnalité de sécurité qui entraîne souvent cette erreur. Vous verrez également un message de journal de la forme "client refusé par la configuration du serveur". La fonctionnalité nécessite une identité d'utilisateur pour accéder à un répertoire. Il est activé par DEFAULT dans le fichier httpd.conf fourni avec Apache. Vous pouvez voir l'activation de la fonctionnalité avec la directive

Require all denied

Cela signifie essentiellement de refuser l'accès à tous les utilisateurs. Pour résoudre ce problème, supprimez la directive refusée (ou bien mieux), ajoutez la directive suivante aux répertoires auxquels vous souhaitez accorder l'accès:

Require all granted

un péché

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>
277
Phil L

Pour Apache Ubuntu 2.4.7, j'ai enfin trouvé que vous deviez répertorier votre hôte virtuel dans Apache2.conf.

# access here, or in any related virtual Host.
<Directory /home/gav/public_html/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
13
GAV

Cela peut être un problème d'autorisations.

chaque chemin parent vers la racine du document virtuel doit être lisible, enregistrable et exécutable par l'utilisateur httpd du serveur Web.

selon cette page à propos des erreurs Apache 403.

Puisque vous utilisez Allow from all, votre commande ne devrait pas avoir d’importance, mais vous pouvez essayer de la basculer sur Deny,Allow pour définir le comportement par défaut sur "autorisant".

8
Pops

Déplacez la clause Directory hors de virtualhost et mettez-la avant de déclarer virtualhost.

M'a aussi rendu fou pendant longtemps. Je ne sais pas pourquoi C'est une chose Debian.

5
samtresler

J'avais le même problème avec un hôte virtuel sur Ubuntu 14.04

Pour moi, la solution suivante a fonctionné:

http://ubuntuforums.org/showthread.php?t=2185282

Il suffit d'ajouter une balise <Directory > à /etc/Apache2/Apache2.conf

0
Roland

Le problème était que l'autorisation d'accès au fichier était erronée.

J'ai changé les autorisations du répertoire et cela a fonctionné.

0
Sebastian Viereck

Je viens de passer plusieurs heures sur ce problème stupide

Tout d'abord, modifiez les autorisations en utilisant ceci dans le terminal

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

Je ne sais pas quelle est la différence entre 664 et 775 J'ai fait les deux 775 comme ceci Aussi htdocs a besoin du chemin du répertoire par exemple pour moi c'était

/usr/local/Apache2/htdocs 

find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +

Ceci est l'autre chose stupide aussi

assurez-vous que votre lien src d'image est votre nom de domaine par exemple

src="http://www.fakedomain.com/images/photo.png"

Assurez-vous d'avoir

EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file

Vous éditez ceux qui utilisent pico dans le terminal

J'ai également créé un répertoire pour les images afin que, lorsque vous tapez dans la barre d'adresse du navigateur domainname.com/images, vous obteniez une liste des photos pouvant être téléchargées et devant être téléchargées avec succès pour indiquer que les fichiers d'image fonctionnent correctement.

<Directory /usr/local/Apache2/htdocs/images>
AddType images/png .png
</Directory>

Et ce sont les solutions que j'ai essayées, maintenant j'ai des images qui fonctionnent ... oui !!!

Sur le (s) prochain (s) problème (s)

Si vous avez tout fait correctement, donnez simplement le répertoire personnel de l’autorisation comme suit:

Sudo chmod o+x $HOME

ensuite

Sudo systemctl restart Apache2
0
cagcak