Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So lösen Sie Apache 403 verboten

So lösen Sie Apache 403 verboten

藏色散人
藏色散人Original
2019-12-16 14:34:174213Durchsuche

So lösen Sie Apache 403 verboten

Wie löst man Apache 403 verboten?

Apache httpd server 403 verbotenes Problem

1. Problembeschreibung

In der httpd-Konfiguration von Apache2 , 403 wird in vielen Situationen auftreten.

Ich habe gerade den httpd-Dienst installiert, natürlich wird es kein 403-Problem geben. Es trat hauptsächlich nach der Änderung einiger Konfigurationen auf. Das Problem wird wie folgt beschrieben:

Nach der Änderung des DocumentRoot-Verzeichnisses ist auf der Site ein 403-Fehler aufgetreten.

Das Einrichten eines virtuellen Hostverzeichnisses kann ebenfalls 403 verursachen.

Der httpd-Dienst von Apache wurde erfolgreich gestartet und sieht normal aus, hat aber keine Zugriffsberechtigung

Das Protokoll wird angezeigt: Zugriff auf / verweigert (Dateisystempfad '/srv/lxyproject/wsgi/ django.wsgi '), weil Suchberechtigungen für eine Komponente des Pfads fehlen

Nach dem Festlegen des virtuellen Verzeichnisses erscheint das Fehlerprotokoll: Client durch Serverkonfiguration verweigert: /srv/lxyproject/wsgi/django.wsgi

2. Analyse von Problemen und Lösungen

Achten Sie auf den Inhalt des Fehlerprotokolls, wenn Sie das Problem unten Schritt für Schritt lösen. Okay, fang an.

1. Die Verzeichniskonfigurationsdatei in httpd.conf

Wenn sie zeigt, dass DocumentRoot geändert wurde, wird sie beispielsweise in „/usr/local/site/test“ geändert. Das Site-Verzeichnis und das Testverzeichnis werden mit mkdir erstellt, und dann wird eine index.html unter dem Testverzeichnis abgelegt. In diesem Fall sollten Sie die Konfiguration in httpd.conf überprüfen.

Ihr fcd6080ae0de4e8d0026af696ea6fda0 muss mit DocumentRoot übereinstimmen, da dieses Verzeichnis die Zugriffsberechtigungseinstellung von Apache für das Verzeichnis ist. Nur das richtige Verzeichnis wird von DocumentRoot übernommen Wirkung.

<Directory "/usr/local/site/test">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn&#39;t give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

2. Verzeichniszugriffsberechtigungen

Der erste Schritt ist korrekt, aber 403 wird immer noch angezeigt. Überprüfen Sie, ob in der Verzeichniskonfiguration „/usr/local/site/test“ Verweigern angezeigt wird "> alle. Andernfalls wird natürlich jeder Zugriff verweigert, 403.

kann auf „Von allen zulassen“ oder „Alle dürfen zur Verarbeitung zugelassen werden“ eingestellt werden.

Ändern Sie „Alle verweigern“ im Stammverzeichnis von a1548cc0a8657521d5cc1e69a646aadf nicht.

3. Verzeichnisberechtigungen

Wenn es immer noch 403 ist, liegt möglicherweise ein Berechtigungsproblem mit dem Website-Verzeichnis vor.

Apache erfordert, dass das Verzeichnis über Ausführungsberechtigungen verfügt, nämlich x. Es ist zu beachten, dass Ihr Verzeichnisbaum über diese Berechtigungen verfügen sollte.

Wenn Ihr Verzeichnis /usr/local/site/test ist, stellen Sie sicher, dass die vier Ebenen /usr, /usr/local, /usr/local/site, /usr/local/site/test alle Verzeichnisse umfassen habe 755 Berechtigungen.

#chmod 755 /usr/local/site
#chmod 755 /usr/local/site/test

Ein Fehler, den ich gemacht habe, war, dass ich nur die Verzeichnisberechtigungen der letzten Ebene und nicht die Verzeichnisberechtigungen der oberen Ebene festgelegt habe, was zu 403 führte.

4. Virtuelles Verzeichnis

[Ich bin noch nie auf dieses Problem gestoßen, weil ich es noch nie so geschrieben habe, was als Referenz verwendet werden kann]

Wenn es sich um ein virtuelles Verzeichnis handelt, müssen Sie in httpd.conf ein virtuelles Verzeichnis definieren, und es sieht wie das folgende Fragment aus:

Alias /folder "/usr/local/folder"                       
<Directory "/usr/local/folder">                         
    Options FollowSymLinks                            
    AllowOverride None                              
    Order deny,allow                               
    Deny from all                                 
    Allow from 127.0.0.1 192.168.1.1                       
</Directory>

Wenn dies der Fall ist und Sie etwas Ähnliches schreiben Zu meinem Code oben, drei Jeder Ordner ist derselbe, es wird definitiv 403 sein! Um es zu lösen, ändern Sie die Zeichenfolge nach dem Schrägstrich in etwas, das nicht mit dem Ordner des virtuellen Verzeichnisses übereinstimmt. Dann kann ich natürlich auf das geänderte virtuelle Verzeichnis zugreifen Es ist auch in Ordnung mit Ordnern, solange Sie keine Angst vor Problemen haben und die Definitionszeichen des virtuellen Verzeichnisses (rot) hinter Alias ​​​​und dem tatsächlichen Ordnernamen (schwarz) unterschiedlich sind, ist es in Ordnung.

5. Selinux-Problem

Wenn es immer noch 403 ist, dann verursacht Selinux Probleme. Daher können Sie die Selinux-Berechtigungen für Ihr Verzeichnis festlegen.

Das ist das Problem, auf das ich heute gestoßen bin.

#chcon -R -t httpd_sys_content_t /usr/local/site
#chcon -R -t httpd_sys_content_t /usr/local/site/test

Online-Informationen besagen, dass die meisten dieser Schritte nicht durchgeführt werden. Aber mein Problem ist tatsächlich, dass es möglicherweise mit dem System zusammenhängt und ich das spezifische Prinzip immer noch nicht verstehe.

6. Probleme mit wsgi

Meine virtuelle Hostkonfiguration ist:

<VirtualHost *:80>
WSGIScriptAlias / /srv/lxyproject/wsgi/django.wsgi
Alias /static/ /srv/lxyproject/collectedstatic/
ServerName 10.1.101.31
#ServerName example.com
#ServerAlias www.example.com
<Directory /srv/lxyproject/collectedstatic>
  Options Indexes  FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<Directory /srv/lxyproject/wsgi/>
    Allow from all
</Directory>
ErrorLog   /etc/httpd/logs/lxyproject.error.log
LogLevel warn
</VirtualHost>

Wenn ich auf den

Protokollfehler zugreife:

client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

Gelöste Methode:

Zulassen von allen in 50e9edfe30bcdb7967f56e54092fad52 ändern zu: Erfordern alle gewährt.

Dieses Problem ist auf die Version zurückzuführen.

Meine httpd-Version ist:

[root@yl-web conf.d]# rpm -qa |grep httpd
httpd-devel-2.4.6-31.el7.centos.x86_64
httpd-tools-2.4.6-31.el7.centos.x86_64
httpd-2.4.6-31.el7.centos.x86_64

Für Versionen unter 2.3 verwenden Sie „Von allen zulassen“ und für Versionen 2.3 und höher Erfordern alle gewährt.

<Directory /home/aettool/aet/apache>
  <IfVersion < 2.3 >
   Order allow,deny
   Allow from all
  </IfVersion>
  <IfVersion >= 2.3>
   Require all granted
  </IfVersion>
</Directory>

Das obige ist der detaillierte Inhalt vonSo lösen Sie Apache 403 verboten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn