Maison  >  Article  >  Opération et maintenance  >  Comment Nginx distribue via l'identité dans l'en-tête

Comment Nginx distribue via l'identité dans l'en-tête

WBOY
WBOYavant
2023-05-11 16:01:13992parcourir

Nginx peut distribuer des requêtes à différents serveurs en fonction d'identifiants personnalisés dans l'en-tête de la requête. Plus précisément, vous pouvez utiliser la directive map pour mapper l'identifiant personnalisé dans l'en-tête de la demande à une adresse de serveur back-end différente, puis utiliser la directive proxy_pass pour transmettre la demande au serveur back-end correspondant.

Ce qui suit est un exemple de fichier de configuration :

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;
        }
    }
}

Dans ce fichier de configuration, nous définissons une directive map pour mapper la variable $http_my_header dans l'en-tête de la requête à différentes adresses de serveur backend. Si la valeur de $http_my_header est value1, la requête sera transmise à backend2.example.com ; si la valeur de $http_my_header est value2, la requête sera transmise à backend3.example.com ; backend1.example.com.

Ensuite, nous définissons trois blocs en amont, représentant les groupes de serveurs backend backend1, backend2 et backend3, chaque groupe contenant plusieurs serveurs backend. Dans le bloc serveur, nous utilisons la directive proxy_pass pour transmettre la requête au serveur backend correspondant.

Après cette configuration, si la valeur de $http_my_header dans l'en-tête de la requête est value1, la requête sera transmise au groupe de serveurs backend backend2 ; si la valeur de $http_my_header est value2, la requête sera transmise au serveur backend backend3 ; sinon, les requêtes seront transmises au groupe de serveurs backend backend1.

Configurez le socket et ajoutez plusieurs configurations :

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";
        }
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer