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

Einführung und Verwendung von fünf Controllern in K8S

Inhaltsverzeichnis Controllertyp von k8s Beziehun...

Verwendung des Linux-Befehls bzip2

1. Befehlseinführung bzip2 wird zum Komprimieren ...

js Canvas zur Realisierung des Gobang-Spiels

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

So installieren Sie Django in einer virtuellen Umgebung unter Ubuntu

Führen Sie die folgenden Vorgänge im Ubuntu-Befeh...

JS erzielt Fünf-Sterne-Lobeffekt

Verwenden Sie JS, um objektorientierte Methoden z...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.17

In diesem Artikel wird die Installations- und Kon...