[PYTHON] Kontrollieren Sie die Fehlerformulierung mit Nginx

Einführung

Ich habe die berühmte Nginx-Fehlereinstellungsmethode bei der Entwicklung eines WEB-Servers untersucht und sie daher zusammengefasst. nginx kann einen statischen Fehler an den Benutzer zurückgeben, wenn ein Fehler auftritt. So machen Sie den Fehler original.

Umgebung

Installation

apt install nginxEinfach installieren mit.

Fehlerkontrolle

Normalerweise wird der Fehler von Python gesteuert, aber Nginx kann den Fehler aufgrund eines Timeouts oder dergleichen zurückgeben. Zu diesem Zeitpunkt ist standardmäßig das Nginx-Zeichen in der Fehlerformulierung enthalten, was zu einem Sicherheitsproblem führen oder die Einheitlichkeit des gesamten Systems beeinträchtigen kann. Daher möchten Sie möglicherweise den ursprünglichen Fehler zurückgeben. Dies ist möglich, indem der Serverkontext in `/ etc / nginx / nginx.conf``` oder / etc / nginx / conf.d / xxx.conf``` geändert wird.

Fehlerdatei

Wenn Sie die ursprüngliche HTML- oder JSON-Datei an den Benutzer zurückgeben, legen Sie die ursprünglichen Dateieinstellungen sowie den http-Status und die ursprüngliche Dateizuordnung im Serverkontext fest.

Das Format der Einstellungen in der Originaldatei sieht folgendermaßen aus.

    location = /Name einstellen(Dateiname) {
root Der Pfad, in dem das ursprüngliche HTML gespeichert ist
    }

Das Format für die Zuordnung des http-Status zum ursprünglichen HTML-Code lautet wie folgt.

    error_Seite http Status/Name einstellen(Dateiname);

Die ganze conf-Datei sieht so aus. Wenn nginx 500, 502, 503, 504 zurückgibt, wird /flask/nginx/50x.html an den Benutzer zurückgegeben.

sample.conf


server {
    listen       8010;
    server_name  original;

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

    #http Status und 50x.Verknüpfen Sie die HTML-Einstellungen
    error_page 500 502 503 504 /50x.html;

    # 50x.HTML-Einstellungen
    location = /50x.html {
        #Pfad, in dem HTML gespeichert ist
        root /flask/nginx;
    }
}

Änderungen der Fehlerdatei und des http-Status

In dem oben genannten Fall wird der http-Status an den Benutzer zurückgegeben, sobald er aufgetreten ist. In einigen Fällen möchten Sie jedoch möglicherweise auch den Status angeben. Dies kann durch Ändern der Verknüpfungseinstellungen erreicht werden. Achten Sie in diesem Fall darauf, kein Leerzeichen zwischen = und http zu setzen.

Das Format zum Zuordnen des http-Status zur Originaldatei lautet wie folgt.

    error_Seite http Status=HTTP-Status, den Sie zurückgeben möchten/Name einstellen(Dateiname);

Die ganze conf-Datei sieht so aus. Wenn nginx 500, 502, 503, 504, http-Status 500 zurückgibt, wird /flask/nginx/50x.html an den Benutzer zurückgegeben.

sample.conf


server {
    listen       8010;
    server_name  original;

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

    #http-Status und Rückgabestatus, 50x.Verknüpfen Sie die HTML-Einstellungen
    error_page 500 502 503 504 =500 /50x.html;

    # 50x.HTML-Einstellungen
    location = /50x.html {
        #Pfad, in dem HTML gespeichert ist
        root /flask/nginx;
    }
}

Fehlerformulierung

Sie können den Rückgabewert auch in eine einfache Text- oder Conf-Datei anstelle einer Datei einfügen. Verknüpfen Sie in diesem Fall die ursprüngliche Einstellung mit dem http-Status und der Einstellung im Serverkontext.

Das Format der Fehlereinstellung ist wie folgt.

    location = /Name einstellen{
Nachricht zurückgeben, um zurückzukehren;
    }

Das Format zum Verknüpfen des http-Status und der Einstellungen lautet wie folgt.

    error_Seite http Status/Name einstellen;

Die ganze conf-Datei sieht so aus. Wenn nginx nun 500, 502, 503, 504 zurückgibt, wird ein "ursprünglicher Fehler" an den Benutzer zurückgegeben.

sample.conf


server {
    listen       8010;
    server_name  original;

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

    #Verknüpfen Sie den http-Status mit 50x-Einstellungen
    error_page 500 502 503 504 /50x;

    #50x Einstellung
    location = /50x {
        #Nachricht zur Rückkehr
        return "Ursprünglicher Fehler";
    }
}

Fehlerformulierung und Änderung des http-Status

In dem oben genannten Fall wird der http-Status an den Benutzer zurückgegeben, sobald er aufgetreten ist. In einigen Fällen möchten Sie jedoch möglicherweise auch den Status angeben. Dies kann durch Ändern der Fehlereinstellungen erreicht werden.

Das Format der Fehlereinstellung ist wie folgt.

    location = /Name einstellen{
Rückgabe des http-Status zur Rückgabe der Nachricht zur Rückgabe;
    }

Die ganze conf-Datei sieht so aus. Wenn nginx nun 500, 502, 503, 504, http-Status 500 zurückgibt, wird "ursprünglicher Fehler" an den Benutzer zurückgegeben.

sample.conf


server {
    listen       8010;
    server_name  original;

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

    #Verknüpfen Sie den http-Status mit 50x-Einstellungen
    error_page 500 502 503 504 /50x;

    #50x Einstellung
    location = /50x {
        #Nachricht zur Rückkehr
        return 500 "Ursprünglicher Fehler";
    }
}

abschließend

Wir haben zusammengefasst, wie Fehler mit nginx kontrolliert werden können. Da Nginx verschiedene Funktionen hat, gibt es meiner Meinung nach viele Möglichkeiten, einen Fehler zurückzugeben. In diesem Fall ist es einfacher zu sehen und zu kühlen, wenn Sie das Fehlerformat vereinheitlichen. Daher dachte ich, es wäre besser, sich daran zu halten.

Recommended Posts

Kontrollieren Sie die Fehlerformulierung mit Nginx
Fehler bei der Pip-Installation
Kontrollieren Sie Skripte mit Ausnahmen
[Amsel-Nginx] Überwachen Sie Nginx mit Amsel
API mit Flask + uWSGI + Nginx
Fehler beim Spielen mit Python
Steuern Sie mehrere Roboter mit jupyter-lab
Wenn ein _sqlite3-Fehler in der Abdeckung auftritt
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Servomotorsteuerung mit Raspberry Pi
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Beobachten Sie die TCP-Überlastungskontrolle mit ns-3
[Tkinter] Steuert Threads mit Ereignisobjekt
Rückgabe von Fehlerdetails bei Fehler mit grpc-node
Invertiertes Pendel mit modellprädiktiver Steuerung