it-swarm.com.de

Apache gibt 403 verbotene Fehler

Ok, also habe ich vorher zwei virtuelle Hosts eingerichtet und sie arbeiten cool. Beide beherbergen einfache Webprojekte und funktionieren gut mit http://project1 und http://project2 im Browser.

Jedenfalls bin ich gekommen, um einen weiteren Vhost hinzuzufügen. Ich habe die Datei/etc/hosts mit 127.0.0.1 project3 bearbeitet und auch die Datei httpd-vhosts.conf durch Kopieren und Einfügen der vorherigen Einträge für project2 und Bearbeiten des Dateipfads aktualisiert. 

Ich habe alle Datei- und Ordnerberechtigungen überprüft (tatsächlich habe ich von project2 kopiert und eingefügt) und einfach eine "Hallo Welt" -Meldung in die Datei index.php eingefügt.

Beim Zugriff auf http://project3 wird eine 403-verbotene Berechtigung verweigert.

Warum ist das so, ich kann nur herausfinden, welchen Schritt ich übersehen habe, da alles korrekt zu sein scheint.

Danke im Voraus.

18
user2672288

Prüfe das :

  • Apache kann physisch auf die Datei zugreifen (der Benutzer, der Apache ausführt, wahrscheinlich www-data oder Apache, kann auf die Datei im Dateisystem zugreifen)
  • Apache kann den Inhalt des Ordners auflisten (Leseberechtigung)
  • Apache hat eine "Allow" -Anweisung für diesen Ordner. Es sollte einen für/var/www/geben. Sie können beispielsweise den Standard-Vhost überprüfen.

Außerdem können Sie die Datei error.log (normalerweise unter /var/log/Apache2/error.log) anzeigen, in der beschrieben wird, warum Sie den 403-Fehler genau erhalten.

Schließlich möchten Sie vielleicht Apache neu starten, nur um sicherzustellen, dass die gesamte Konfiguration angewendet wird .. __ Dies kann im Allgemeinen mit /etc/init.d/Apache2 restart erfolgen. Auf einigen Systemen heißt das Skript httpd. Einfach herausfinden.

20
blue112

Der Befehl restorecon funktioniert wie folgt:

restorecon -v -R /var/www/html/
6
sangeetha

Ich habe dieses Problem gerade behoben, nachdem ich einige Tage lang Probleme hatte. Folgendes hat für mich funktioniert:

Überprüfen Sie zunächst Ihre Apache error_log -Datei und sehen Sie sich die neueste Fehlermeldung an.

  • Wenn es so etwas sagt:

    access to /mySite denied (filesystem path
    '/Users/myusername/Sites/mySite') because search permissions
    are missing on a component of the path
    

    dann gibt es ein Problem mit Ihren Dateiberechtigungen. Sie können sie beheben, indem Sie diese Befehle vom Terminal aus ausführen:

    $ cd /Users/myusername/Sites/mySite
    $ find . -type f -exec chmod 644 {} \;
    $ find . -type d -exec chmod 755 {} \;
    

    Aktualisieren Sie dann die URL, an der sich Ihre Website befinden sollte (z. B. http://localhost/mySite). Wenn Sie immer noch einen 403-Fehler erhalten und Ihr Apache error_log immer noch dasselbe sagt, dann schrittweise Verschieben Sie Ihren Verzeichnisbaum nach oben und passen Sie die Verzeichnisberechtigungen an. Sie können dies vom Terminal aus tun:

    $ cd ..
    $ chmod 755 mySite
    

    Falls erforderlich, fahren Sie fort mit:

    $ cd ..
    $ chmod Sites 
    

    und wenn nötig

    $ cd ..
    $ chmod myusername
    

    NICHT weiter gehen. Sie könnten Ihr System königlich verwirren ... Wenn Sie immer noch die Fehlermeldung search permissions are missing on a component of the path erhalten, weiß ich nicht, was Sie tun sollen. Es ist jedoch ein anderer Fehler aufgetreten (der folgende), den ich wie folgt behoben habe:

  • Wenn Ihr error_log etwas sagt:

    client denied by server configuration:
    /Users/myusername/Sites/mySite
    

    dann liegt das Problem nicht an den Dateiberechtigungen, sondern an der Apache-Konfiguration.

    Beachten Sie, dass in Ihrer httpd.conf -Datei eine Standardkonfiguration wie diese (Apache 2.4 und höher) angezeigt wird:

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>
    

    oder so (Apache 2.2):

    <Directory />
      Order deny,allow
      Deny from all
    </Directory>
    

    NICHT ändere das! Wir werden diese Berechtigungen nicht global außer Kraft setzen, sondern stattdessen in Ihrer httpd-vhosts.conf -Datei . Stellen Sie jedoch zunächst sicher, dass Ihre vhost Include-Zeile in httpd.conf uncommented ist. Es sollte so aussehen. (Ihr genauer Pfad kann unterschiedlich sein.)

    # Virtual hosts
    Include etc/extra/httpd-vhosts.conf
    

    Öffnen Sie nun die httpd-vhosts.conf -Datei, die Sie gerade Included haben. Fügen Sie einen Eintrag für Ihre Webseite hinzu, wenn Sie noch keinen haben. Es sollte ungefähr so ​​aussehen. Die DocumentRoot- und Directory-Pfade sollten identisch sein und auf die Stelle zeigen, an der sich Ihre index.html - oder index.php-Datei befindet. Für mich liegt das im Unterverzeichnis public.

    Für Apache 2.2:

    <VirtualHost *:80>
    #     ServerAdmin [email protected]
        DocumentRoot "/Users/myusername/Sites/mySite/public"
        ServerName mysite
    #     ErrorLog "logs/dummy-Host2.example.com-error_log"
    #     CustomLog "logs/dummy-Host2.example.com-access_log" common
        <Directory "/Users/myusername/Sites/mySite/public">
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
            Require all granted
        </Directory>
    </VirtualHost>
    

    Die Zeilen sagen

    AllowOverride All
    Require all granted
    

    sind für Apache 2.4+ kritisch. Ohne diese Einstellungen überschreiben Sie nicht die in httpd.conf angegebenen Apache-Standardeinstellungen. Beachten Sie, dass bei Verwendung von Apache 2.2 stattdessen diese Zeilen angezeigt werden

    Order allow,deny
    Allow from all
    

    Diese Änderung war für Googler dieses Problems eine große Verwirrung, wie z. B. ich, da das Kopieren und Einfügen dieser Apache 2.2-Zeilen in Apache 2.4+ nicht funktioniert und die Apache 2.2-Zeilen in älteren Hilfethreads noch häufig gefunden werden.

    Nachdem Sie Ihre Änderungen gespeichert haben, starten Sie Apache neu. Der Befehl hierfür hängt von Ihrem Betriebssystem und der Installation ab. Wenn Sie also Hilfe benötigen, google das separat.

Ich hoffe das hilft jemand anderem!


PS: Wenn Sie Probleme haben, diese .conf -Dateien zu finden, führen Sie den Befehl find aus. Beispiel:

$ find / -name httpd.conf
5
Cameron Hudson

Der Server benötigt möglicherweise Leseberechtigung für Ihr Basisverzeichnis und .htaccess darin

1
mikemay

Sie können versuchen, Selinux zu deaktivieren, und es mit dem folgenden Befehl erneut versuchen

setenforce 0
0
S V Aditya

In meinem Fall ist dies fehlgeschlagen, da die IP meines Quellservers auf dem Zielserver nicht auf die Whitelist gesetzt wurde.

Für z.B. Ich habe versucht, von einer Anwendung, die auf meinem Quellserver ausgeführt wird, auf https://prodcat.ref.test.co.uk zuzugreifen. Auf dem Quellserver finden Sie IP von ifconfig

Diese IP sollte in der Apache-Konfigurationsdatei des Zielservers als Whitelist aufgeführt werden. Wenn nicht, holen Sie sich die Whitelist.

Schritte zum Hinzufügen einer IP für das Whitelisting (wenn Sie auch den Zielserver steuern) ssh zum Apache-Server Sudo su - cd/usr/local/Apache/conf/extra (tatsächliche Verzeichnisse können je nach Konfiguration unterschiedlich sein)

Suchen Sie die Konfigurationsdatei für die Zielanwendung, z. prodcat-443.conf

RewriteCond %{REMOTE_ADDR} <YOUR Server's IP> 
for e.g.
RewriteCond %{REMOTE_ADDR} !^192\.68\.2\.98

Hoffe das hilft jemandem

0
Sanjay Bharwani