[PYTHON] Contrôler le libellé des erreurs avec nginx

introduction

J'ai étudié la célèbre méthode de paramétrage des erreurs nginx lors du développement d'un serveur WEB, donc je l'ai résumée. nginx peut renvoyer une erreur statique à l'utilisateur lorsqu'une erreur se produit. Voici comment rendre l'erreur d'origine.

environnement

Installation

apt install nginxInstallez simplement avec.

Contrôle des erreurs

Normalement, l'erreur est contrôlée par python, mais nginx peut renvoyer l'erreur en raison d'un délai d'expiration ou autre. À ce moment-là, par défaut, le caractère nginx est inclus dans le libellé de l'erreur, ce qui peut provoquer un problème de sécurité ou rompre l'uniformité de l'ensemble du système, vous souhaiterez peut-être renvoyer l'erreur d'origine. Ceci est possible en modifiant le contexte du serveur dans / etc / nginx / nginx.conf ou` `` / etc / nginx / conf.d / xxx.conf.

Fichier d'erreur

Lorsque vous renvoyez le fichier html ou le fichier json d'origine à l'utilisateur, définissez les paramètres du fichier d'origine et l'état http et l'association de fichier d'origine dans le contexte du serveur.

Le format des paramètres dans le fichier d'origine ressemble à ceci.

    location = /Nom du paramètre(nom de fichier) {
root Le chemin où le HTML d'origine est stocké
    }

Le format d'association de l'état http avec le code HTML d'origine est le suivant.

    error_état http de la page/Nom du paramètre(nom de fichier);

L'ensemble du fichier de configuration ressemble à ceci. Désormais, lorsque nginx renvoie 500, 502, 503, 504, /flask/nginx/50x.html sera retourné à l'utilisateur.

sample.conf


server {
    listen       8010;
    server_name  original;

    limit_conn servers 2;
    
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }

    #État http et 50x.Lier les paramètres HTML
    error_page 500 502 503 504 /50x.html;

    # 50x.paramètres html
    location = /50x.html {
        #Chemin où le HTML est stocké
        root /flask/nginx;
    }
}

Modification du fichier d'erreur et de l'état http

Dans le cas ci-dessus, le statut http sera renvoyé à l'utilisateur tel qu'il s'est produit, mais dans certains cas, vous souhaiterez peut-être également spécifier le statut. Ceci peut être réalisé en modifiant les paramètres de liaison. Dans ce cas, veillez à ne pas mettre d'espace entre le statut = et http.

Le format d'association de l'état http avec le fichier d'origine est le suivant.

    error_état http de la page=Statut HTTP que vous souhaitez renvoyer/Nom du paramètre(nom de fichier);

L'ensemble du fichier de configuration ressemble à ceci. Désormais, lorsque nginx renvoie 500, 502, 503, 504, l'état http 500, /flask/nginx/50x.html sera renvoyé à l'utilisateur.

sample.conf


server {
    listen       8010;
    server_name  original;

    limit_conn servers 2;
    
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }

    #État http et état de retour, 50x.Lier les paramètres HTML
    error_page 500 502 503 504 =500 /50x.html;

    # 50x.paramètres html
    location = /50x.html {
        #Chemin où le HTML est stocké
        root /flask/nginx;
    }
}

Formulation d'erreur

Vous pouvez également mettre la valeur de retour dans un simple fichier texte ou conf au lieu d'un fichier. Dans ce cas, liez le paramètre d'origine à l'état http et au paramètre dans le contexte du serveur.

Le format du paramètre d'erreur est le suivant.

    location = /Nom du paramètre{
retour Message à retourner;
    }

Le format de liaison de l'état et des paramètres http est le suivant.

    error_état http de la page/Nom du paramètre;

L'ensemble du fichier de configuration ressemble à ceci. Cela renverra une "erreur d'origine" à l'utilisateur lorsque nginx renvoie 500, 502, 503, 504.

sample.conf


server {
    listen       8010;
    server_name  original;

    limit_conn servers 2;
    
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }

    #Lier l'état http avec les paramètres 50x
    error_page 500 502 503 504 /50x;

    #Réglage 50x
    location = /50x {
        #Message à retourner
        return "Erreur d'origine";
    }
}

Libellé d'erreur et changement d'état http

Dans le cas ci-dessus, le statut http sera renvoyé à l'utilisateur tel qu'il s'est produit, mais dans certains cas, vous souhaiterez peut-être également spécifier le statut. Ceci peut être réalisé en modifiant les paramètres d'erreur.

Le format du paramètre d'erreur est le suivant.

    location = /Nom du paramètre{
retourner le statut http pour retourner le message à retourner;
    }

L'ensemble du fichier de configuration ressemble à ceci. Désormais, lorsque nginx renvoie 500, 502, 503, 504, état http 500, "erreur d'origine" sera renvoyée à l'utilisateur.

sample.conf


server {
    listen       8010;
    server_name  original;

    limit_conn servers 2;
    
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi.sock;
    }

    #Lier l'état http avec les paramètres 50x
    error_page 500 502 503 504 /50x;

    #Réglage 50x
    location = /50x {
        #Message à retourner
        return 500 "Erreur d'origine";
    }
}

en conclusion

Nous avons résumé comment contrôler les erreurs avec nginx. Comme nginx a diverses fonctions, je pense qu'il existe de nombreuses possibilités de renvoyer une erreur. Dans ce cas, si vous unifiez le format d'erreur, il sera facile à voir et à refroidir, donc si vous êtes particulier à ce sujet, vous devriez vous y tenir.

Recommended Posts

Contrôler le libellé des erreurs avec nginx
Erreur avec l'installation de pip
Contrôler les scripts avec des exceptions
[blackbird-nginx] Surveiller Nginx avec blackbird
API avec Flask + uWSGI + Nginx
Erreur lors de la lecture avec python
Contrôlez plusieurs robots avec jupyter-lab
Lorsqu'une erreur _sqlite3 se produit dans la couverture
[Raspberry Pi] Contrôle du moteur pas à pas avec Raspberry Pi
Commande de servomoteur avec Raspberry Pi
Essayez la simulation de contrôle de fréquence avec Python
Observez le contrôle de congestion TCP avec ns-3
[Tkinter] Contrôler les threads avec l'objet Event
retourne des détails d'erreur en cas d'erreur avec grpc-node
Pendule inversé avec contrôle prédictif du modèle