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

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

WBOY
Libérer: 2023-05-11 16:01:13
avant
1076 Les gens l'ont consulté

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;
        }
    }
}
Copier après la connexion

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";
        }
    }
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal