Zusammenfassung der Konfigurationsprobleme von Nginx-Standort und Proxy-Pass-Pfad

Zusammenfassung der Konfigurationsprobleme von Nginx-Standort und Proxy-Pass-Pfad

Dieser Artikel testet, ob die Standortübereinstimmung mit / endet und ob die Proxy_Pass-Übereinstimmung mit / endet, und stellt den gesamten Testvorgang wieder her. Helfen Sie, die konkrete Situation zu verstehen.

1. Grundlegende Konfiguration des Nginx-Standorts

1.1 Nginx-Konfigurationsdatei

Upstream-Test1 {
Server 127.0.0.1:8000;
}
Upstream-Test2 {
Server 127.0.0.1:8000;
}
Server{
	Servername test.com;
	hören Sie 80;
        access_log /usr/local/openresty/nginx/logs/test.com_access.log aktuell;
        error_log /usr/local/openresty/nginx/logs/test.com.log Fehler;
        Proxy_Set_Header Host $host;
        Proxy_Set_Header X-Real-IP $Remote_Addr;
        proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
        Proxy-Verbindungs-Timeout 3 s;
        Proxy_Lese_Timeout 120 s;
        Proxy_Sendezeitüberschreitung 120 s;
        Proxy_next_upstream-Fehler, Timeout, ungültiger Header, http_404, http_502, http_504, http_500;
	
        Standort /Benutzer/ {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Passwort http://test1/;
		}
        Standort / {
                proxy_set_header Verbindung "";
                Proxy_http_Version 1.1;
                Proxy-Passwort http://test2/;
        }
}

1.2 Python-Skript

python2 kann ausgeführt werden

Dieses Skript wird verwendet, um den Anforderungsinhalt abzurufen. Dies dient als Backend, welches das Backend des Proxy_pass-Proxys ist.

#!/usr/bin/env python

SimpleHTTPServer importieren
SocketServer importieren

PORT = 8000

Klasse GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    auf def do_GET(selbst):
        drucken(self.headers)
        selbst.send_response(200, "")
    auf def do_POST(selbst):
        drucken(self.headers)
        Inhaltslänge = self.headers.getheaders('Inhaltslänge')
        Länge = int(Inhaltslänge[0]) wenn Inhaltslänge, sonst 0
        drucken(self.rfile.read(Länge))
        selbst.send_response(200, "")

Handler = GetHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
httpd.serve_forever()

2. Testen

2.1. Testort

Es gibt / am Ende und es gibt / am Ende von proxy_pass

Die Nginx-Konfiguration ist wie folgt

 Standort /Benutzer/ {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Passwort http://test1/;
		}

Anforderungs-URL

test.com/user/test.html

Backend-Inhalte

Was wird gedruckt:

Gastgeber: test1
Inhaltslänge: 0
Benutzer-Agent: PostmanRuntime/7.26.8
Akzeptieren: */*
Postman-Token: f2bfe770-4f44-4ee9-91c4-060f59dfb26c
Akzeptierte Kodierung: gzip, deflate, br


127.0.0.1 - - [10. April 2021 16:54:26] "POST /test.html HTTP/1.1" 200 -

Fazit: Wenn der Proxy-Pass-Adresse ein / hinzugefügt wird, lautet die eigentliche Anforderung zum Anfordern test.com/user/test.html http://test1/test.html .

2.2. Prüfort

Am Ende von proxy_pass steht / und am Ende von proxy_pass steht kein /

Die Nginx-Konfiguration ist wie folgt

 Standort /Benutzer/ {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Passwort http://test1;
		}

Anforderungs-URL

test.com/user/test.html

Backend-Inhalte

Was wird gedruckt:

Gastgeber: test1
Inhaltslänge: 0
Benutzer-Agent: PostmanRuntime/7.26.8
Akzeptieren: */*
Postman-Token: e33d0a2c-1965-4152-b87c-94fca50f2899
Akzeptierte Kodierung: gzip, deflate, br

127.0.0.1 - - [10. April 2021 16:57:18] "POST /user/test.html HTTP/1.1" 200 -

Fazit: Wenn die Proxy_Pass-Adresse kein / hat, lautet die eigentliche Anfrage an test.com/user/test.html http://test1/user/test.html

2.3. Drei Standorte testen

Kein nachgestelltes / und proxy_pass kein nachgestelltes /

Die Nginx-Konfiguration ist wie folgt

 Standort /Benutzer {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Passwort http://test1;
		}

Anforderungs-URL

test.com/user/test.html

Backend-Inhalte

Was wird gedruckt:

Gastgeber: test1
Inhaltslänge: 0
Benutzer-Agent: PostmanRuntime/7.26.8
Akzeptieren: */*
Postman-Token: 31cd33c6-4c95-41b5-a095-28cdc7113dcd
Akzeptierte Kodierung: gzip, deflate, br

127.0.0.1 - - [10. April 2021 16:59:34] "POST /user/test.html HTTP/1.1" 200 -

Anfrage test.com/user/test.html Die eigentliche Anfrage ist http://test1/user/test.html

2.4, Standort nicht hinzugefügt

Das letzte / und proxy_pass plus das letzte /

Die Nginx-Konfiguration ist wie folgt

  Standort /Benutzer {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Passwort http://test1/;
		}

Anforderungs-URL

test.com/user/test.html

Backend-Inhalte

Was wird gedruckt:

Gastgeber: test1
Inhaltslänge: 0
Benutzer-Agent: PostmanRuntime/7.26.8
Akzeptieren: */*
Postman-Token: d0f4b83f-6482-41ba-8a01-c059eececc2d
Akzeptierte Kodierung: gzip, deflate, br

127.0.0.1 - - [10. April 2021 17:00:21] "POST //test.html HTTP/1.1" 200 -

Anfrage test.com/user/test.html Die eigentliche Anfrage ist http://test1//test.html

2.5. Standortende

Am Ende des Pfads befindet sich ein / proxy_pass. Fügen Sie am Ende / hinzu

Die Nginx-Konfiguration ist wie folgt

   Standort /Benutzer/ {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Pass http://test1/haha/;
		}

Anforderungs-URL

test.com/user/test.html

Backend-Inhalte

Was wird gedruckt:

Gastgeber: test1
Inhaltslänge: 0
Benutzer-Agent: PostmanRuntime/7.26.8
Akzeptieren: */*
Postman-Token: 6447cf0b-5988-4f96-81a4-2b621fe32604
Akzeptierte Kodierung: gzip, deflate, br

127.0.0.1 - - [10. April 2021 17:03:27] "POST /haha/test.html HTTP/1.1" 200 -

Anfrage test.com/user/test.html Die eigentliche Anfrage ist http://test1/haha/test.html

2.6. Ende des Standorts

Am Ende des Pfads befindet sich ein / proxy_pass und am Ende kein /

Die Nginx-Konfiguration ist wie folgt

 Standort /Benutzer/ {
			proxy_set_header Verbindung "";
        	Proxy_http_Version 1.1;
			Proxy-Pass http://test1/haha;
		}

Anforderungs-URL

test.com/user/test.html

Backend-Inhalte

Was wird gedruckt:

Gastgeber: test1
Inhaltslänge: 0
Benutzer-Agent: PostmanRuntime/7.26.8
Akzeptieren: */*
Postman-Token: 32fb2a50-1e7c-4131-9804-1828e21ca841
Akzeptierte Kodierung: gzip, deflate, br

127.0.0.1 - - [10. April 2021 17:05:03] "POST /hahatest.html HTTP/1.1" 200 -

Anfrage test.com/user/test.html Die eigentliche Anfrage ist http://test1/hahatest.html

Abschluss

Seriennummer Zugriffs-URL Standortkonfiguration Proxy_Pass-Konfiguration Vom Backend empfangene Anfragen Bemerkung
1 test.com/Benutzer/test.html /Benutzer/ http://test1/ /prüfung.html
2 test.com/Benutzer/test.html /Benutzer/ http://test1 /Benutzer/test.html
3 test.com/Benutzer/test.html /Benutzer http://test1 /Benutzer/test.html
4 test.com/Benutzer/test.html /Benutzer http://test1/ //test.html
5 test.com/Benutzer/test.html /Benutzer/ http://test1/haha/ /haha/test.html
6 test.com/Benutzer/test.html /Benutzer/ http://test1/haha /hahatest.html

Beachten Sie, dass sich das Backend in der obigen Tabelle auf den Webdienst bezieht, der dem Python-Skript entspricht.

Bei der täglichen Bereitstellung von Websites wird häufig der Reverse-Proxy proxy_pass von nginx verwendet. Es gibt eine Konfiguration, die geklärt werden muss: Bei der Konfiguration proxy_pass ,

  • Wenn / nach upstram_name erscheint, ist es gleichbedeutend mit dem absoluten Stammpfad und nginx wird den mit location übereinstimmenden Pfadteil nicht als Proxy verwenden.
  • Wenn kein / vorhanden ist, wird auch der passende Pfadteil geproxied.

Dies ist das Ende dieses Artikels über die detaillierte Konfiguration des Nginx-Standorts und des Proxy_Pass-Pfads. Weitere relevante Inhalte zur Konfiguration des Nginx-Standorts und des Proxy_Pass-Pfads finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der verschiedenen Verwendungen von proxy_pass in nginx
  • Detaillierte Erklärung des Unterschieds zwischen URL-Endungen mit / und ohne / in der Proxy_Pass-Konfiguration von Nginx
  • Proxy_pass-Methode in mehreren if in Nginx-Standorten
  • Implementierung von proxy_pass im Nginx-Reverse-Proxy
  • Unterschiede zwischen proxy_pass in zwei Modulen in nginx

<<:  So betten Sie mithilfe von Iframe andere Webseiten in eine Webseite ein

>>:  25 CSS-Frameworks, Tools, Software und Vorlagen geteilt

Artikel empfehlen

Detaillierte Erklärung zum Einrichten eines DNS-Servers unter Linux

1. DNS-Server-Konzept Die Kommunikation im Intern...

Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker

Was ist Redis Cluster? Redis Cluster ist eine von...

Löschen von Dateien mit Leerzeichen in Linux (keine Verzeichnisse)

In unserer täglichen Arbeit kommen wir oft mit Da...

Vue3 kapselt die Lupeneffektkomponente der Jingdong-Produktdetailseite

In diesem Artikel wird der spezifische Code der V...

Die beste Erklärung zu HTTPS

Guten Morgen allerseits, ich habe meinen Artikel ...

So installieren und konfigurieren Sie WSL unter Windows

Was ist WSL Zitat aus der Baidu-Enzyklopädie: Das...

Beispielcode zum Konvertieren von Videos mit der ffmpeg-Befehlszeile

Bevor Sie mit dem Haupttext dieses Artikels begin...

Praxis der Vue Global Custom-Anweisung Modal Drag

Inhaltsverzeichnis Hintergrund Umsetzungsideen Er...

Schritte und Fallstricke beim Upgrade von Linux MySQL 5.5 auf MySQL 5.7

Inhaltsverzeichnis Linux MySQL 5.5 auf MySQL 5.7 ...

Detaillierte Analyse der MySQL-Optimierung von like und = Leistung

Einführung Die meisten Leute, die schon einmal Da...

100 Möglichkeiten, die Farbe eines Bildes mit CSS zu ändern (sammelnswert)

Vorwort „Wenn es um Bildbearbeitung geht, denken ...

JS praktisches objektorientiertes Schlangenspielbeispiel

Inhaltsverzeichnis denken 1. Bild mit dem gierige...

Webdesign-Dimensionen und Regeln für die Werbegestaltung auf Webseiten

1. Unter 800 x 600 gibt es keine horizontale Bild...