Comment configurer Nginx pour utiliser des pages d’erreur personnalisées sur CentOS 7

introduction

Nginx est un serveur Web hautes performances capable de fournir du contenu avec souplesse et puissance. Lors de la conception de vos pages Web, il est souvent utile de personnaliser chaque élément de contenu visible par vos utilisateurs. Cela inclut les pages d’erreur pour les demandes de contenu non disponible. Dans ce guide, nous montrerons comment configurer Nginx pour qu’il utilise des pages d’erreur personnalisées sur CentOS 7.

Conditions préalables

Pour commencer à utiliser ce guide, vous aurez besoin d’un utilisateur non root avec les privilèges + sudo +. Vous pouvez configurer un utilisateur de ce type en suivant notre initialisation du guide de configuration initiale de CentOS 7. Nginx devra également être installé sur votre système. Apprenez à configurer ceci en suivant his guide.

Création de vos pages d’erreur personnalisées

Nous allons créer quelques pages d’erreur personnalisées à des fins de démonstration, mais vos pages personnalisées seront évidemment différentes.

Nous allons placer nos pages d’erreurs personnalisées dans le répertoire + / usr / share / nginx / html + où Nginx de CentOS définit la racine de son document par défaut. Nous allons créer une page pour les erreurs 404 appelée + custom_404.html + et une autre pour les erreurs générales de niveau 500, appelée + custom_50x.html +. Vous pouvez utiliser les lignes suivantes si vous ne faites que tester. Sinon, placez votre propre contenu à ces emplacements:

echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /usr/share/nginx/html/custom_404.html
echo "<p>I have no idea where that file is, sorry.  Are you sure you typed in the correct URL?</p>" | sudo tee -a /usr/share/nginx/html/custom_404.html
echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /usr/share/nginx/html/custom_50x.html
echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /usr/share/nginx/html/custom_50x.html

Nous avons maintenant deux pages d’erreur personnalisées que nous pouvons utiliser lorsque les demandes des clients génèrent des erreurs différentes.

Configuration de Nginx pour utiliser vos pages d’erreur

Maintenant, nous devons simplement dire à Nginx que ces pages doivent être utilisées chaque fois que les conditions d’erreur correctes se produisent. Nous aurons besoin d’ajuster vos blocs de serveur. Sur CentOS 7, le bloc du serveur principal se trouve dans le fichier + / etc / nginx / nginx.conf +. Nous allons configurer ce bloc de serveur, mais vous devez ajuster les autres blocs de serveur que vous avez configurés:

sudo nano /etc/nginx/nginx.conf

Dans le fichier, localisez le bloc qui définit le contexte du serveur. Nous pouvons maintenant indiquer à Nginx nos pages d’erreur personnalisées.

Erreurs Directes 404 à la page personnalisée 404

Le fichier de configuration CentOS Nginx définit déjà une page d’erreur 404 à l’aide de la directive + error_page +. Nous devrons modifier cela afin que, lorsqu’une erreur 404 se produise (lorsqu’un fichier demandé n’est pas trouvé), la page personnalisée que vous avez créée soit servie. Nous allons ajuster le bloc d’emplacement associé au fichier afin de nous assurer que la racine correspond à l’emplacement de notre système de fichiers et que le fichier n’est accessible que par le biais de redirections internes Nginx (non demandables directement par les clients):

/etc/nginx/nginx.conf

http {

   . . .

   server {

       . . .

       error_page 404 /;
       location = / {


       }

       . . .
   }
}

Habituellement, il n’est pas nécessaire de définir le + root + dans le nouveau bloc d’emplacement car il correspond à la racine du bloc serveur. Cependant, nous sommes explicites ici pour que nos pages d’erreur soient servies même si nous déplaçons notre contenu Web normal et la racine du document associée vers un emplacement différent.

Dirigez les erreurs de niveau 500 vers la page Custom 50x

Nous pouvons ensuite ajouter les directives pour nous assurer que, lorsque Nginx rencontrera des erreurs de niveau 500 (problèmes liés au serveur), il servira l’autre page personnalisée que nous avons créée. Cela suivra exactement la même formule que nous avons utilisée dans la dernière section. Cette fois, nous définissons plusieurs erreurs de niveau 500 à utiliser toutes les pages + custom_50x.html +:

/etc/nginx/nginx.conf

http {

   . . .

   server {

       . . .

       error_page 404 /custom_404.html;
       location = /custom_404.html {
           root /usr/share/nginx/html;
           internal;
       }

       error_page  500 502 503 504 /;
       location = / {


       }




   }
}

En bas, nous avons également ajouté une passe FastCGI factice afin de pouvoir tester notre page d’erreur de niveau 500. Cela ne fonctionnera pas correctement car le backend n’existe pas. Demander une page ici nous permettra de vérifier que des erreurs de niveau 500 servent notre page personnalisée.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Redémarrage de Nginx et test de vos pages

Testez la syntaxe de votre fichier de configuration en tapant:

sudo nginx -t

Si des erreurs ont été signalées, corrigez-les avant de continuer. Si aucune erreur de syntaxe n’est renvoyée, redémarrez Nginx en tapant:

sudo systemctl restart nginx

Maintenant, lorsque vous accédez au domaine ou à l’adresse IP de votre serveur et demandez un fichier inexistant, vous devriez voir la page 404 que nous avons configurée:

http:///thiswillerror

image: https: //assets.digitalocean.com/articles/nginx_custom_error_1404/custom_404.png [nginx custom 404]

Lorsque vous vous rendrez à l’emplacement que nous avons configuré pour le laissez-passer FastCGI, nous recevons une erreur 502 passerelle incorrecte avec notre page personnalisée à 500 niveaux:

http:///testing

image: https: //assets.digitalocean.com/articles/nginx_custom_error_1404/custom_50x.png [nginx custom 50x]

Vous pouvez maintenant revenir en arrière et supprimer le faux emplacement de passe FastCGI de votre configuration Nginx.

Conclusion

Vous devriez maintenant servir des pages d’erreur personnalisées pour votre site. C’est un moyen simple de personnaliser l’expérience de vos utilisateurs, même en cas de problème. Une suggestion pour ces pages est d’inclure des liens vers des endroits où ils peuvent aller pour obtenir de l’aide ou plus d’informations. Dans ce cas, assurez-vous que les destinations de lien sont accessibles même lorsque les erreurs associées se produisent.