135 votes

<VirtualHost Apache 403 Interdit>

J'ai récemment essayé de mettre en place un serveur de test avec Apache. Le site doit fonctionner sous le domaine www.mytest.com. Je reçois toujours une erreur 403 Forbidden. Je suis sur Ubuntu 10.10 édition serveur. La racine du document se trouve sous le répertoire /var/www. Voici mes réglages :

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

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::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

ServerAdmin admin@mytest.com
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

#
# Cela devrait être modifié en fonction de DocumentRoot que vous avez défini.
#

Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all

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

Si je saisis l'adresse IP depuis mon bureau, le site s'affiche correctement. J'ai modifié le fichier host sur mon bureau pour pointer www.mytest.com vers l'IP du serveur. Lorsque je l'utilise, je reçois une erreur 403. Comme de nombreuses fonctions de ce site dépendent du nom du site, je dois pouvoir accéder au site par son nom de domaine.

Autre chose étrange, même si tous les fichiers journaux sont créés correctement, ils n'ont aucune information concernant cette erreur.

Je suis bloqué. Est-ce que quelqu'un peut m'aider ?

0 votes

Pouvez-vous ajouter le contenu de : sudo sh -c ". /etc/apache2/envvars; apache2 -S" (liste des hôtes virtuels) et : sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""

0 votes

La première commande renvoie ce qui suit: Configuration VirtualHost : 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntaxe OK La deuxième commande renvoie: /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *

1 votes

Essayer sur serverfault.com

317voto

Phil L Points 2856

Apache 2.4.3 (ou peut-être légèrement plus tôt) a ajouté une nouvelle fonctionnalité de sécurité qui se traduit souvent par cette erreur. Vous verriez également un message de journal sous la forme "client denied by server configuration". La fonctionnalité nécessite une identité utilisateur pour accéder à un répertoire. Elle est activée par DÉFAUT dans le fichier httpd.conf fourni avec Apache. Vous pouvez voir l'activation de la fonctionnalité avec la directive

Require all denied

Cela revient essentiellement à refuser l'accès à tous les utilisateurs. Pour résoudre ce problème, supprimez la directive denied (ou bien ajoutant la directive suivante aux répertoires auxquels vous souhaitez accorder l'accès :

Require all granted

comme dans

   Order allow,deny
   Allow from all
   # Nouvelle directive nécessaire dans Apache 2.4.3 : 
   Require all granted

3 votes

Je tiens à faire remarquer que si vous rencontrez ce problème en utilisant des hôtes virtuels, vous devrez ajouter "Require all granted" à chaque paramètre d'hôte virtuel à l'intérieur du fichier apache/conf/extra/httpd-vhosts.conf.

1 votes

J'ai ajouté cette directive à /etc/apache2/apache2.conf et cela a aidé, merci!

0 votes

@Soundfx4, il n'y a pas de dossier appelé apache/conf/extra à l'intérieur de /etc/apache2

19voto

GAV Points 29

Pour apache Ubuntu 2.4.7, j'ai finalement découvert que vous devez ajouter votre hôte virtuel à la liste blanche dans apache2.conf

# accès ici, ou dans tout hôte virtuel connexe.

    Options FollowSymLinks
    AllowOverride None
    Require all granted

9voto

Pops Points 10137

Cela peut être un problème de permissions.

Chaque chemin parent menant à la racine du document virtuel doit être lisible, inscriptible et exécutable par l'utilisateur httpd du serveur web

selon cette page sur les erreurs 403 d'Apache.

Comme vous utilisez Allow from all, l'ordre ne devrait pas être important, mais vous pourriez essayer de le changer en Deny,Allow pour définir le comportement par défaut sur "autorisation".

4 votes

Écrivable ? Vraiment ? Je ne suis pas sûre

0 votes

Merci c'était mon problème. Les autorisations sur le dossier de mon application étaient bonnes mais le dossier parent ne permettait aucun accès.

6voto

samtresler Points 326

Déplacez la clause du répertoire en dehors du virtualhost et placez-la avant de déclarer le virtualhost.

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

0 votes

Woah, c'est tellement bizarre.

0voto

slaver113 Points 623

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

J'ai modifié les permissions du répertoire et ça a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X