Apache: Client von Serverkonfiguration abgelehnt


150

ich bekomme

[Di 24 Apr 12:12:55 2012] [Fehler] [Client 127.0.0.1] Client von Serverkonfiguration abgelehnt: / labs / Projects / Nebula / bin /

Meine Verzeichnisstruktur sieht aus wie (ich verwende Symfony 2, sollte eine ähnliche Struktur für andere Webframeworks haben)

Geben Sie hier die Bildbeschreibung ein

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


1
@JiewMeng: Du solltest wahrscheinlich Phils Antwort akzeptieren. Dies scheint das Problem bei den meisten heutigen Apache-Installationen zu sein (Apache 2.4). Vielen Dank.
Dotancohen

Antworten:


396

Apache 2.4.3 (oder möglicherweise etwas früher) hat eine neue Sicherheitsfunktion hinzugefügt, die häufig zu diesem Fehler führt. Außerdem wird eine Protokollmeldung des Formulars "Client von Serverkonfiguration abgelehnt" angezeigt. Für die Funktion ist eine autorisierte Benutzeridentität erforderlich, um auf ein Verzeichnis zugreifen zu können. Es wird von DEFAULT in der mit Apache gelieferten httpd.conf aktiviert. Sie können die Aktivierung der Funktion anhand 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 abgelehnte Direktive (oder viel besser) und 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>

9
Möglicherweise muss auch Satisfy Anynach demRequire all granted
MarkHu

@ MarkHu - können Sie die mögliche Notwendigkeit Satisfy anyin diesem Zusammenhang erklären ? Ich frage, weil ich mir hier die Haare ausgezogen habe und alles hinzugefügt hat, damit es für mich funktioniert. Das Seltsame ist, dass die App bis zu einem kürzlich durchgeführten Apache-Upgrade auf mit dem vorhandenen vhost-Eintrag gearbeitet hat 2.4.9. Noch seltsamer ist, dass es auf einem anderen Server mit denselben App / Vhost- und Apache / PHP-Versionen einwandfrei funktioniert. Unterschiedliche Server - AWS Linux und Ubuntu 14.10. Seltsam ... Ich denke, ich muss die httpd.confDateien jedes Servers vergleichen, um festzustellen, ob es dort einen Konfigurationsunterschied gibt ...
Darragh Enright

Überprüfen Sie auch Ihren htaccessPfad, auf den Sie zugreifen
möchten

Meine Umgebung funktionierte erst, als ich mich für die @ MarkHu Satisfy Any-Lösung entschied. Vielen Dank!!!
Neonigma

Auch nach dem Ändern, um alle gewährten zu erfordern, wird der gleiche Fehler angezeigt. Zugriff verweigert.
Deepak

10

OK, ich verwende die falsche Syntax, die ich verwenden sollte

Allow from 127.0.0.1
Allow from ::1
...

1
Für Apache> 2.4 konnte dies allein bei mir nicht funktionieren. Aber es funktionierte in Kombination mit Require all granted, wie von @ Phil-L
Mugoma J. Okomba

5

In Apache 2.4 wurde die alte Zugriffsberechtigungssyntax nicht mehr unterstützt und mit Require durch ein neues System 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 stammen, die mit "192.168.1" beginnen.

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

sudo a2enmod access_compat

1

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


1

Hier ist meine virtuelle Symfony 1.4-Hostdatei 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 auf einen bestimmten IP-Bereich nicht einschränken möchten, z. B. localhost, verwenden Sie Folgendes:

Allow from 127.0.0.0/8

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

Aber vielleicht könnte das Problem mit einer Fehlkonfiguration in Ihrer "apache2.conf" zusammenhängen.

Auf welchem ​​Betriebssystem läuft der Apache?


1

wenn Sie die haben

Allow from All

in httpd.conf dann stellen Sie sicher, dass wir haben

index.php

wie in der folgenden Zeile in httpd.conf

DirectoryIndex index.html index.php

1

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

Das führte zur Neuerstellung der .htaccess-Datei und dann konnte ich auf meine Dateien zugreifen.



-3

Dieser Code hat bei mir funktioniert ..

 <Location />
Allow from all
Order Deny,Allow
</Location> 

Hoffe das hilft anderen


1
Dies sollte unbedingt nicht dazu ermutigt werden, eine Apache-Konfiguration hinzuzufügen.
Ricky Mutschlechner

Dadurch kann Apache auf jede Datei auf dem Computer zugreifen. Sehr schlecht für die Sicherheit.
Deleet
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.