web-dev-qa-db-fra.com

Apache: client refusé par la configuration du serveur

Je reçois

[Mar 24 avr. 12:12:55 2012] [erreur] [client 127.0.0.1] client refusé par la configuration du serveur:/labs/Projects/Nebula/bin /

Ma structure de répertoire est la suivante (j'utilise Symfony 2, mais ma structure devrait être similaire à celle d'autres frameworks Web)

enter image description here

J'ai la configuration de vhosts comme:

<VirtualHost nebula:80>
    DocumentRoot "/labs/Projects/Nebula/web/"
    ServerName nebula
    ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>

<Directory "/labs/Projects/Nebula/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>

Je me demande quel est le problème et comment puis-je le résoudre?

149
Jiew Meng

OK j'utilise une mauvaise syntaxe, je devrais utiliser

Allow from 127.0.0.1
Allow from ::1
...
11
Jiew Meng

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é requiert une identité d'utilisateur autorisé 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>
394
Phil L

Dans Apache 2.4, l'ancienne syntaxe d'autorisation d'accès était obsolète et remplacée par un nouveau système utilisant Require.

Ce que vous voulez alors, c'est quelque chose comme ce qui suit:

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

Cela autorisera les connexions en provenance de de l'hôte local ou d'adresses IP commençant par "192.168.1".

Il existe également un nouveau module disponible qui permet à Apache 2.4 de reconnaître l'ancienne syntaxe si vous ne souhaitez pas mettre à jour votre configuration immédiatement:

Sudo a2enmod access_compat
4
Chirp

Pouvez-vous essayer de remplacer "Autoriser de 127.0.0 192.168.1 :: 1 localhost" par "Autoriser de tous". Si cela résout votre problème, vous devez être moins restrictif quant à l'endroit où le contenu peut être demandé.

1
MauricioOtta

Voici mon fichier d’hôte virtuel symfony 1.4 sur debian, qui fonctionne très bien.

  <Directory /var/www/sf_project/web/>
    Options All Indexes FollowSymLinks    
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

Si vous ne souhaitez pas restreindre l'accès à une plage d'adresses IP spécifique, par exemple localhost utilise ceci:

Allow from 127.0.0.0/8

Le mod_authz_Host est responsable du filtrage des plages d'adresses IP. Vous pouvez rechercher des informations détaillées dans ce document.

Mais peut-être que le problème pourrait être lié à une sorte de mauvaise configuration dans votre "Apache2.conf".

Sur quel système d'exploitation Apache est-il exécuté?

1
cb0

J'ai eu ce problème en utilisant Vesta CP et pour moi, le truc était de supprimer .htaccess et d'essayer d'accéder à nouveau à n'importe quel fichier.

Cela a eu pour résultat la régénération du fichier .htaccess et j'ai ensuite pu accéder à mes fichiers.

1
Guille Acosta

si vous rencontrez le

Allow from All

dans httpd.conf alors assurez-vous que nous avons

index.php

comme dans la ligne ci-dessous dans httpd.conf

DirectoryIndex index.html index.php
1
Satya

Dans mon cas, la clé était:

AllowOverride All

dans vhost definition. J'espère que ça aide quelqu'un.

0