Comment résoudre Apache 403 interdit ?
Problème interdit du serveur Apache httpd 403
1. Description du problème
Dans la configuration httpd d'Apache2, 403 apparaîtra dans de nombreuses situations.
Je viens d'installer le service httpd, bien sûr il n'y aura pas de problème 403. Cela s'est produit principalement après modification de certaines configurations. Le problème est décrit comme suit :
Après modification du pointage du répertoire DocumentRoot, une erreur 403 s'est produite sur le site.
La configuration d'un répertoire d'hôte virtuel peut également provoquer un message 403.
Le service httpd d'Apache a démarré avec succès, et il semble normal, mais il n'a pas l'autorisation d'accéder
Le journal apparaît : accès à / refusé (chemin du système de fichiers '/srv/lxyproject/wsgi/ django.wsgi') car les autorisations de recherche sont manquantes sur un composant du chemin
Après avoir paramétré le répertoire virtuel, le journal des erreurs apparaît : client refusé par configuration du serveur : /srv/lxyproject/wsgi/django.wsgi
2. Analyse des problèmes et des solutions
Faites attention au contenu du journal des erreurs lors de la résolution du problème étape par étape ci-dessous. OK, commence.
1. Le fichier de configuration du répertoire dans httpd.conf
S'il montre que le DocumentRoot a été modifié, par exemple, il est remplacé par "/usr/local/site/test". Le répertoire du site et le répertoire de test sont créés à l'aide de mkdir, puis un index.html est placé sous le répertoire de test. Dans ce cas, vous devez vérifier la configuration dans httpd.conf.
Votre
<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'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. Autorisations d'accès au répertoire
La première étape est correcte mais 403 apparaît toujours. Vérifiez s'il y a un refus depuis dans la configuration du répertoire
peut être défini sur Autoriser tout ou Exiger que tout soit accordé pour le traitement.
Ne modifiez pas Deny from all dans le répertoire racine du
3. Autorisations du répertoire
S'il s'agit toujours de 403, il peut s'agir d'un problème d'autorisation avec le répertoire du site Web.
Apache nécessite que le répertoire ait des autorisations d'exécution, ce qui est x. Il convient de noter que votre arborescence de répertoires doit avoir ces autorisations.
Si votre répertoire est /usr/local/site/test, alors assurez-vous des quatre niveaux de /usr, /usr/local, /usr/local/site, /usr/local/site/test Tous les répertoires avoir 755 autorisations.
#chmod 755 /usr/local/site #chmod 755 /usr/local/site/test
Une erreur que j'ai commise est de définir uniquement les autorisations du répertoire de dernier niveau et de ne pas définir les autorisations du répertoire de niveau supérieur, ce qui donne 403.
4. Annuaire virtuel
[Je n'ai jamais rencontré ce problème car je ne l'ai jamais écrit comme ça Les informations en ligne disent ceci, qui peut être utilisé comme référence]
S'il s'agit d'un répertoire virtuel, alors vous devez définir un répertoire virtuel dans httpd.conf, et il ressemble au fragment suivant :
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>
Si tel est le cas et que vous écrivez quelque chose de similaire à mon code ci-dessus, trois Chaque dossier est le même, ce sera certainement 403 ! Comment résoudre ce problème est de changer la chaîne après la barre oblique après Alias. Remplacez-la par quelque chose qui n'a pas le même nom que le dossier du répertoire virtuel. Ensuite, je peux utiliser le répertoire virtuel modifié pour y accéder. Les dossiers conviennent également, tant que vous n'avez pas peur des ennuis et tant que les caractères de définition du répertoire virtuel (rouges) derrière Alias et le nom réel du dossier (noir) sont différents, tout ira bien.
5. Problème Selinux
S'il s'agit toujours de 403, alors selinux pose problème. Par conséquent, vous pouvez définir les autorisations selinux sur votre répertoire.
C'est le problème que j'ai rencontré aujourd'hui.
#chcon -R -t httpd_sys_content_t /usr/local/site #chcon -R -t httpd_sys_content_t /usr/local/site/test
Les informations en ligne indiquent que la majeure partie de cette étape ne se produira pas. Mais mon problème est effectivement que cela peut être lié au système, et je ne comprends pas bien le principe précis.
6. Problèmes avec wsgi
Ma configuration d'hôte virtuel est :
<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>
Lorsque j'accède au
erreur de journal :
client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi
Méthode résolue :
Modifier Autoriser de tous dans
Ce problème est dû à la version
Ma version httpd est :
[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
Pour les versions inférieures à 2.3, utilisez Autoriser de tous, et pour les versions 2.3 et supérieures, utilisez Exiger que tout soit accordé.
<Directory /home/aettool/aet/apache> <IfVersion < 2.3 > Order allow,deny Allow from all </IfVersion> <IfVersion >= 2.3> Require all granted </IfVersion> </Directory>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!