NGINX-Proxies: Bedienen mehrerer Endpunkte an einem Standort
10:05, 07.06.2024
Verwaltung mehrerer Standorte von NGINX Proxies
Bevor wir in alle Details der Konfiguration und vieles mehr eintauchen, lassen Sie uns mit den grundlegenden Dingen beginnen. Nginx ist ein recht leistungsfähiger Webserver, der als Reverse Proxy, Load Balancer oder Forward Proxy eingesetzt werden kann. Nur zur allgemeinen Information über dieses Thema, lassen Sie uns das Prinzip des Load Balancers diskutieren, da diese Terminologie sehr verwirrend sein kann. Dieser Balancer verteilt also die Anfragen auf eine Gruppe von Servern und leitet erst danach die Antwort vom Server an den Client weiter.
Bei Reverse Proxies handelt es sich um Anwendungen, die sich zwischen internen Servern und Clients befinden. Diese Art von Server funktioniert, indem er den Datenverkehr der Clients annimmt und ihn an das interne Netzwerk weiterleitet. Auf diese Weise können die Benutzer nicht direkt auf interne Server zugreifen, sondern nur über einen Reverse-Proxy. Die Hauptvorteile des Reverse-Proxys liegen in der Sicherheit, Skalierbarkeit und besseren SSL-Verschlüsselung.
Auf der Grundlage unserer praktischen Erfahrungen in diesem Bereich werden wir erklären, wie man Nginx so konfiguriert, dass es mehrere Endpunkte mit demselben Standort bedient. Zu diesem Zweck werden wir die Einstellungen des Reverse Proxy verwenden.
1. Konfiguration von Nginx
In den Nginx-Konfigurationsdateien lässt sich leicht klären, auf welche Weise der Server mit HTTP-Anfragen umgeht. Die primäre Konfigurationsdatei heißt nginx.conf. Wenn wir speziell über Ubuntu sprechen, dann kann sie auf diesem Betriebssystem in einem Verzeichnis wie /etc/nginx gefunden werden. Die Direktiven sind über diese Datei zugänglich und können in Blöcken gruppiert werden.
1.1. Die Server-Block-Richtlinie
Die Serverblöcke können auch Kontexte genannt werden. Sie definieren den virtuellen Server vollständig. In der Abbildung unten verwenden wir listen für die Einstellung von IP/Hostname und Port:
server {
listen 345.0.1.1:8080;
}
In diesem Beispiel befindet sich der virtuelle Server an der Adresse 345.0.1.1 und die Portangaben lauten 8080.
1.2. Die Richtlinie für den lokalen Block
Im lokalen Block werden Informationen darüber gespeichert, wie der Server mit den übereinstimmenden HTTP-Anfragen umgehen soll. Der Ort wird mit einem regulären Ausdruck/Präfixstring angegeben. So passt die URL der HTTP-Anfrage zum lokalen Block (insbesondere mit Präfix-String oder regulärem Ausdruck).
Um den Inhalt zu servieren, können wir root wie im folgenden Beispiel verwenden:
server {
listen 345.0.1.1:8080;
location /books {
root /info/categories;
}
}
In dem oben beschriebenen Beispiel werden die Dateien aus dem Verzeichnis info/categories zurückgegeben, und durch Hinzufügen von books zu location werden die URLs mit den books abgeglichen.
Eine weitere Alternative kann alias sein. Diese Direktive fügt die Anfrage-URL zum lokalen direkten Pfad hinzu, so dass das String-Präfix übersprungen werden kann:
location /books {
alias /info/categories;
}
2. Verwaltung von mehreren Proxy-Endpunkten
Hier werden wir versuchen zu erklären, wie der Prozess funktioniert, indem wir 2 virtuelle Server erstellen und diese 2 Endpunkte simulieren. Danach werden wir den Prozess der Nginx-Server-Einrichtung erklären, um Anfragen mit den Endpunkten unter einer URL zu projizieren.
2.1. Festlegung der Endpunkte
Beginnen wir mit den 2 einfachsten Endpunkten:
server {
listen 8081;
location /user1 {
alias /info/user1;
}
}
server {
listen 8082;
location /user2 {
alias /info/user2;
}
}
Auf diese Weise haben wir 2 virtuelle Server definiert, jeder Block enthält Informationen wie:
- Der erste Server befindet sich am Port 8081, der Inhalt wird aus dem Verzeichnis /info/user1 direkt ausgeliefert und passt zu Anfragen mit /user1.
- Das zweite Beispiel befindet sich auf dem Port 8082, der Inhalt wird aus dem Verzeichnis /info/user2 geliefert und passt zu Anfragen mit /user2.
2.2. Die Richtlinie proxy_pass
Um eine ordnungsgemäße Weiterleitung einzurichten, sollten wir proxy-pass im lokalen Block verwenden. Diese Art von Direktive funktioniert, indem sie HTTP-Anfragen an eine bestimmte Adresse weiterleitet. Hier ist eine Illustration, wie sie aussehen sollte:
server {
listen 8000;
location /api {
proxy_pass http://345.0.1.1:8081/user1;
}
location /api/user2 {
proxy_pass http://345.0.1.1:8082/user2;
}
}
In dieser Abbildung wurde ein virtueller Server auf Port 8000 und 2 Standorte in diesem Server erstellt, diese Standorte funktionieren so:
- /api leitet die Anfragen an den ursprünglichen Endpunkt um (http:// 345.0.1.1:8081/user1)
- /api/user2 leitet die Anfragen an den Endpunkt http:// 345.0.1.1:8082/user2 um.
Eine weitere notwendige Tatsache ist, wie proxy_pass URLs umleitet. Hier werden wir 2 Fälle wie zum Beispiel teilen:
- Proxy_pass verknüpft URL mit dem Hostnamen, in der Form http:// 345.0.1.1:8081
- Proxy_pass verbindet URL mit dem Pfad, und zwar so http:// 345.0.1.1:8081/user1
2.3. Erstellung von Beispieldaten
Vor dem Testen der Einstellung sollten Sie Testdateien in den Verzeichnissen /info/user2 und /info/user1 anlegen, dies kann in einer solchen Form durchgeführt werden:
$ sudo echo { 'message' : 'Hi from user1' } | sudo tee /info/user1/echo.json
{ message : Hi from user1 }
$ sudo echo { 'message' : 'Hi from user2' } | sudo tee /info/user2/echo.json
{ message : Hi from user2 }
After the creation of the sample data, you can start the testing process in the following way:
$ curl http://345.0.1.1:8000/api/echo.json
{ message : Hi from user1 }
$ curl http://345.0.1.1:8000/api/user2/echo.json
{ message : Hi from user2 }
Die JSON-Dateien wurden in der Ausgabe des Testprozesses angezeigt. Um den Prozess abzuschließen, lassen Sie uns alle Details der ursprünglichen Anfrage besprechen, wie z. B.:
- Die Anfrage wird von http:// 345.0.1.1:8000/api/echo.json nach http:// 345.0.1.1:8081/user1/echo.json weitergeleitet.
- Die Anfrage http:// 345.0.1.1:8081/user1/echo.json wird verarbeitet und liefert die Ressource /info/user1/echo.json
Zusammenfassung
Basierend auf unserer praktischen Erfahrung im Bereich der virtuellen Server, haben wir beschlossen, ein paar nützliche Empfehlungen und reale Beispiele, wie Nginx-Server als Reverse-Proxy zu nutzen teilen. Wir haben mehrere praktische Beispiele erwähnt, wie 2 Endpunkte unter einem Standortpfad funktionieren können. Wir hoffen, dass dieser Artikel für Ihren Fall hilfreich war und Sie alles, was Sie brauchen, aus den obigen Informationen leicht nutzen können.