it-swarm.com.de

Apache: Client durch Serverkonfiguration abgelehnt

Ich bekomme

[Dienstag, 24. April, 12:12:55 2012] [Fehler] [Client 127.0.0.1] Client von Serverkonfiguration abgelehnt:/labs/Projects/Nebula/bin /

Meine Verzeichnisstruktur sieht so aus (ich verwende Symfony 2, sollte für andere Web-Frameworks ähnlich aufgebaut sein)

enter image description here

Ich habe vhosts eingerichtet wie:

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

Ich frage mich, was das Problem ist und wie ich es beheben kann.

149
Jiew Meng

OK, ich verwende die falsche Syntax, ich sollte verwenden

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

Apache 2.4.3 (oder etwas früher) hat eine neue Sicherheitsfunktion hinzugefügt, die häufig zu diesem Fehler führt. Außerdem wird eine Protokollmeldung mit der Form "Client von Serverkonfiguration abgelehnt" angezeigt. Für diese Funktion ist eine autorisierte Benutzeridentität erforderlich, um auf ein Verzeichnis zugreifen zu können. Es wird von DEFAULT in der httpd.conf aktiviert, die mit Apache geliefert wird. Sie können die Aktivierung der Funktion mit der Direktive sehen

Require all denied

Dies bedeutet im Grunde, allen Benutzern den Zugriff zu verweigern. Um dieses Problem zu beheben, entfernen Sie entweder die verweigerte Direktive (oder fügen Sie die folgende Direktive zu den Verzeichnissen hinzu, auf die Sie Zugriff gewähren möchten:

Require all granted

wie in

<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

In Apache 2.4 wurde die alte Zugriffsberechtigungssyntax verworfen und durch ein neues System mit Require ersetzt.

Was Sie dann wollen, ist so etwas wie das Folgende:

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

Dies ermöglicht Verbindungen, die entweder vom lokalen Host oder von IP-Adressen ausgehen, die mit "192.168.1" beginnen.

Es ist auch ein neues Modul verfügbar, mit dem Apache 2.4 die alte Syntax erkennt, wenn Sie Ihre Konfiguration nicht sofort aktualisieren möchten:

Sudo a2enmod access_compat
4
Chirp

Können Sie versuchen, "Allow from 127.0.0 192.168.1 :: 1 localhost" in "Allow from all" zu ändern? Wenn dies Ihr Problem behebt, müssen Sie weniger einschränken, wo Inhalte angefordert werden können

1
MauricioOtta

Hier ist meine Symfony 1.4 Virtual Host-Datei auf Debian, die gut funktioniert.

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

Wenn Sie den Zugriff nicht auf einen bestimmten IP-Bereich beschränken möchten, z. localhost benutze dies:

Allow from 127.0.0.0/8

Das mod_authz_Host ist für das Filtern von IP-Bereichen verantwortlich. Dort können Sie detaillierte Informationen nachschlagen.

Aber vielleicht hängt das Problem mit einer Fehlkonfiguration in Ihrer "Apache2.conf" zusammen.

Auf welchem ​​Betriebssystem läuft der Apache?

1
cb0

Ich hatte dieses Problem mit Vesta CP und für mich bestand der Trick darin, .htaccess zu entfernen und erneut auf eine Datei zuzugreifen.

Das Ergebnis war die Regeneration der .htaccess-Datei, und dann konnte ich auf meine Dateien zugreifen.

1
Guille Acosta

wenn du das hast

Allow from All

in der httpd.conf dann stellen sie sicher das wir haben

index.php

wie in der unteren Zeile in httpd.conf

DirectoryIndex index.html index.php
1
Satya

In meinem Fall war der Schlüssel:

AllowOverride All

in vhost definition. Ich hoffe es hilft jemandem.