Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Nginx über die Kennung im Header verteilt

Wie Nginx über die Kennung im Header verteilt

WBOY
WBOYnach vorne
2023-05-11 16:01:131040Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen