Heim > Artikel > Betrieb und Instandhaltung > Wie Nginx über die Kennung im Header verteilt
Nginx kann Anfragen basierend auf benutzerdefinierten Kennungen im Anfrageheader an verschiedene Server verteilen. Konkret können Sie die Map-Direktive verwenden, um den benutzerdefinierten Bezeichner im Anforderungsheader einer anderen Back-End-Serveradresse zuzuordnen, und dann die Proxy_pass-Direktive verwenden, um die Anforderung an den entsprechenden Back-End-Server weiterzuleiten.
Das Folgende ist eine Beispielkonfigurationsdatei:
http { map $http_my_header $backend { default backend1.example.com; value1 backend2.example.com; value2 backend3.example.com; } upstream backend1 { server 192.168.1.1:8080; server 192.168.1.2:8080; } upstream backend2 { server 192.168.2.1:8080; server 192.168.2.2:8080; } upstream backend3 { server 192.168.3.1:8080; server 192.168.3.2:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://$backend; } } }
In dieser Konfigurationsdatei definieren wir eine Map-Direktive, um die Variable $http_my_header im Anforderungsheader einer anderen Endserveradresse zuzuordnen . Wenn der Wert von $http_my_header value1 ist, wird die Anfrage an backend2.example.com weitergeleitet; wenn der Wert von $http_my_header value2 ist, wird die Anfrage an backend3.example.com weitergeleitet backend1.example.com.
Als nächstes definieren wir drei Upstream-Blöcke, die die Backend-Servergruppen Backend1, Backend2 und Backend3 darstellen. Jede Gruppe enthält mehrere Backend-Server. Im Serverblock verwenden wir die Direktive „proxy_pass“, um die Anfrage an den entsprechenden Backend-Server weiterzuleiten.
Wenn nach dieser Konfiguration der Wert von $http_my_header im Anforderungsheader Wert 1 ist, wird die Anforderung an die Backend-Servergruppe Backend2 weitergeleitet. Wenn der Wert von $http_my_header Wert 2 ist, wird die Anforderung weitergeleitet an die Backend-Servergruppe weitergeleitet; andernfalls wird die Anfrage an die Backend-Servergruppe weitergeleitet.
Socket konfigurieren und mehrere Konfigurationen hinzufügen:
server { listen 80; server_name example.com; location /websocket { proxy_pass http://$backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } }
Das obige ist der detaillierte Inhalt vonWie Nginx über die Kennung im Header verteilt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!