web-dev-qa-db-fra.com

Custom Bad Gateway Page avec Nginx

Est-il possible de servir une page d'erreur "Bad Gateway" personnalisée dans Nginx? 

Semblable à avoir 404 pages personnalisées.

42
deb

Cela ressemble à la configuration des pages personnalisées 404. Voici ce que j'ai.

#site-wide error pages
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
30
Larsenal

Trois éléments doivent être en place pour que votre page d'erreur personnalisée s'affiche à la place de l'erreur générique «Bad Gateway». 

  1. Vous devez créer un fichier html nommé quelque chose comme "500.html" et le placer à la racine. Dans le cas de Rails situés derrière Nginx, cela signifie qu'il doit être placé à public/500.html.

  2. Vous devez avoir une ligne dans votre fichier de configuration qui pointe au moins les 502 erreurs sur cette page 500.html comme ceci:

    error_page 502 /500.html;
    
  3. Vous devez avoir un bloc d’emplacement pour /500.html dans votre fichier de configuration. Si votre racine est déjà définie, ce bloc peut être vide. Mais le bloc doit néanmoins exister. 

    location /500.html{
    }
    
43
Jack Desert

Oui c'est possible 

Tapez ceci dans votre terminal

cd /etc/nginx

Sudo nano nginx.conf

et sous http ajouter ces lignes

    error_page 500 Path_to_your_custom_error_page;
    error_page 503 Path_to_your_custom_error_page;
    error_page 504 Path_to_your_custom_error_page;

Maintenant, redémarrez nginx en tapant cette commande:

Sudo service nginx restart

Bingo maintenant, vous pouvez voir un message d'erreur personnalisé sur l'erreur de passerelle

2
Sachin Jaiswal

La question ne dit pas, mais il est assez courant de rencontrer ce problème lorsque les API sont derrière un proxy nginx, alors dans ce cas, vous voulez que la réponse soit JSON, pas HTML.

Mon approche préférée consiste simplement à utiliser la fonctionnalité de redirection de la directive error_page pour rediriger vers une page d'erreur du même site:

error_page 502 503 $scheme://$server_name/500.json;

C'est une ligne, vous pouvez réutiliser le même 500.json pour différents location ', et il n'est pas nécessaire de créer un mystérieux vide location. Vous placez votre message d'erreur dans le fichier 500.json à la racine de votre site. Je suppose que vous avez déjà une directive location / {...} qui sert des fichiers statiques.

Vous pouvez bien sûr utiliser cette même approche pour servir également une page d'erreur HTML.

0
jlyonsmith

en utilisant debian (9.3 stretch), j’ai suivi les étapes suivantes:

  • créer /var/www/html/502.html avec le contenu de la page d'erreur 502

  • éditer /etc/nginx/sites-enabled/mywebsite.conf

donc ça ressemble à ça:

server {
    listen 80; listen [::]:80;
    server_name www.mywebsite.com;

    error_page 502 /502.html;
    location /502.html {
        root /var/www/html;
    }
}
  • puis redémarré nginx en utilisant service nginx restart
0
vchrizz