Erreur 403 après la mise à niveau vers apache2.4

34

Après la mise à niveau à partir du serveur Ubuntu 13.04, les pages www ne s’affichent pas.

Erreur 403 Interdit Vous n'êtes pas autorisé à accéder à / sur ce serveur.

J'ai changé les contrôles de contrôle d'accès d'apache2.2 à apache2.4, mais cela n'a pas fonctionné. Que pourrais-je faire d'autre?

utilisateur205336
la source

Réponses:

59

En réalité, la syntaxe des fichiers de configuration dans apache2.4 a été modifiée.

Source: Cela m'est aussi arrivé après la mise à niveau vers 13.10.

fichiers conf.d

Tous les fichiers qui étaient dans /etc/apache2/conf.ddoivent être déplacés vers /etc/apache2/conf-available.

Ils travaillent maintenant de la même manière siteset modsfonctionnent. Il suffit de mettre vos fichiers de configuration dans le conf-availabledossier et d'activer celui que vous voulez aveca2enconf <config-file-name> .

Exemple:

J'ai eu un fichier conf.d/httpd.confqui avait la directive ServerName.
Pour que cela fonctionne, je devais le déplacer dans le conf-availablerépertoire et l'activer manuellement.

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

fichiers de sites

Auparavant, les fichiers /etc/apache2/sites-availablen’avaient aucune extension. Par exemple /etc/apache2/sites-available/default. Maintenant, une .confextension est nécessaire.

Exemple:

Si vous aviez /etc/apache2/sites-available/some-site, dans 13.04 vous pouvez simplement l'activer en utilisant sudo a2ensite some-site. Maintenant, il va vous donner une erreur en disant

ERREUR: Certains sites n'existent pas!

Pour résoudre ce problème, ajoutez a .confà tous vos fichiers de configuration dans sites-available. Vous pouvez faire la même chose dans sites-enabled, ou vous pouvez supprimer tous les fichiers et les réactiver chacun manuellement.
Je recommande de les faire manuellement car vous devrez probablement réparer chaque VHost (étape suivante).

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

si vous avez décidé de les faire manuellement:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

Directives de l'hôte virtuel:

autoriser / refuser vs exiger

Si vous aviez:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

Il devrait devenir:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

Pour plus d'informations, consultez les commentaires de DaveRandom sur une réponse à Stack Overflow.

Autrement dit, si vous avez mis à niveau vers apache2.4 et que vous conservez l’ancienne version httpd.confd’apache2.2, autorisez la directive devrait continuer à fonctionner correctement. Si vous avez mis à jour votre httpd.conf(ce que je suggérerais), vous obtiendrez 403 erreurs jusqu'à ce que vous changiez les directives Order/ Allow/ Denyen leur équivalent.Require .

Options du répertoire

Si vous aviez des options Directory, notez que tous doivent être préfixé avec un +ou -ou aucun d'entre eux du tout. Un mélange des deux n'est pas autorisé:

Exemple:

Ceci est autorisé:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

Donc, ceci est (notez que ces exemples ne font pas tous les deux la même chose, le précédent désactive l' MultiViewsoption, pas le suivant):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

Ce n'est plus permis:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

La dernière option de configuration génèrera une erreur de syntaxe en disant:

Toutes les options doivent commencer par + ou -, ou aucune option ne le peut.

Redémarrer Apache

Une fois que tout est terminé, vous devez redémarrer votre serveur Apache pour que les modifications prennent effet:

 sudo apache2ctl restart

Vous pouvez trouver un guide de mise à niveau détaillé de 2.2 à 2.4 sur la documentation officielle.

Dan
la source
1
Sur mon système, il n'y a ni httpd.conffichier, ni conf.drépertoire. Mais il y a un apache2.conffichier. J'ai essayé de le déplacer dans le conf-availablerépertoire et j'ai obtenu le message d' erreur suivant lorsque j'ai redémarré apache2: apache2: impossible d'ouvrir le fichier de configuration /etc/apache2/apache2.conf: Aucun fichier ou répertoire de ce type - Quelle peut en être la raison?
Amal Murali
@ AmalMurali Le httpd.confn'était qu'un exemple. Il est possible que vous n'ayez aucun fichier de configuration dans le conf.drépertoire. Dans ce cas, ignorez simplement cette étape. En ce qui concerne apache2.conf, il ne devrait pas être déplacé dans le conf-availablerépertoire. Il s’agit du fichier de configuration principal d’apache. Son chemin doit être /etc/apache2/apache2.conf et ne doit pas être modifié.
Dan
1
Sensationnel. C’est pratiquement le seul survol clair que l’on puisse trouver. Merci.
Russ Bateman
il n'y a pas config.dou sites availabledossier. voir tous les fichiers de configuration ici: imgur.com/WczXp3v
diEcho
1
@ EdwardBlack Il pourrait y avoir une autre raison si vous utilisez toujours l'hôte virtuel par défaut, comme expliqué dans les réponses à la question suivante: Les hôtes virtuels Apache ne fonctionnent plus après la mise à jour vers 13.10
Dan
0

Je suppose que les sites Web fonctionnent sur votre serveur Ubuntu.

Vérifiez votre httpd.conf pour vous assurer que votre paramètre DocumentRoot pointe au bon endroit.

Vérifiez que les autorisations de fichier sur le dossier référencé par DocumentRoot peuvent être lues par l'utilisateur sous lequel le serveur Web est exécuté.

Vérifiez que vous avez un index.html / index.htm, etc. approprié et que le serveur Web n'essaie pas de créer une liste de répertoires.

Mat
la source
0

J'ai rencontré des problèmes similaires.

Je ne pouvais pas faire fonctionner Apache 2.4 à moins d’utiliser «Allow from All» (Permis de tous), c’était ennuyeux car je voulais fournir une rupture nette entre les versions <2.4. Après de nombreux essais et erreurs et de nombreuses recherches, j'ai repéré une référence à access_compat et réalisé que celle-ci était là uniquement pour des raisons de compatibilité. Bien que la documentation d'Apache indique que les deux peuvent être utilisés, elle vous recommande de ne pas le faire.

J'ai supprimé ce module du fichier de chargement / etc / sysconfig / apache2, ce qui a immédiatement résolu mon problème.

Cordialement Liam

Liam O Donnell
la source
-1

Je sers des fichiers à partir d'un répertoire non standard. Pour que la mise à niveau fonctionne correctement, je devais modifier /etc/apache2/apache2.conf et ajouter: Options Index FollowSymLinks AllowOverride Aucun Require à tous

Après cela et les modifications recommandées ci-dessus, l'erreur 403 s'est envolée.

kupy chiot
la source