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

Die Vollversion des gängigen Linux-Tools vi/vim

Warum Vim lernen? Linux verfügt über eine große A...

So erstellen Sie ein standardisiertes VMware-Image für Kubernetes unter Rancher

Wenn wir Kubernetes lernen, müssen wir in der Kub...

Gemessenes Bild - HTTP-Anforderung

Bitte öffnen Sie die Testseite in einem gängigen ...

Beispielcode zur Eingabe des Kennzeichens und der Provinzkürzel in html

Das Prinzip besteht darin, zuerst ein Div mit ein...

MySQL-Fehlernummer 1129 – Lösung

SQLyog stellt eine Verbindung zu MySQL her, Fehle...

Detaillierte Erklärung von Group By und Having in MySQL

Mit der GROUP BY-Syntax können die Abfrageergebni...

MySQL-Prozesssteuerung: IF()-, IFNULL()-, NULLIF()-, ISNULL()-Funktionen

In MySQL können Sie die Funktionen IF(), IFNULL()...

jQuery manipuliert Cookies

Code kopieren Der Code lautet wie folgt: jQuery.c...

Zusammenfassung der Lösung für den Webpack -v-Fehler von Vue

Xiaobai lernte Vue kennen, dann lernte er Webpack...

Bei der anonymen Mysql-Anmeldung kann keine Datenbankproblemlösung erstellt werden

Häufig gestellte Fragen Der Zugriff für den Benut...

Analyse der Unterschiede zwischen Mysql InnoDB und MyISAM

MySQL unterstützt viele Arten von Tabellen (d. h....

Geben Sie einige Tipps zur Verwendung von JavaScript-Operatoren

Inhaltsverzeichnis 1. Optionaler Verkettungsopera...