Dans la section http {}, définissez
map $http_header_1 $route {default 10;}
map $http_header_2 $route {default 20;}
map $http_header_3 $route {default 30;}
L'en-tête demandé est défini sur
curl -H "header_1:0" http://xxx.com/xxx
Puis dans la section serveur {},
echo "$route";
Le résultat imprimé est toujours 30, car la troisième instruction de carte écrase la valeur précédente ;
La question est : Comment obtenir la valeur souhaitée en fonction des différents en-têtes dans la partie carte ?
Pour résoudre le problème 1, comme je le pense
map $http_header_1 $route1 {default 10;}
map $http_header_2 $route2 {default 20;}
map $http_header_3 $route3 {default 30;}
Puis dans la partie location {}, utilisez
if ($http_header_1) {
echo "$route1";
}
Pour obtenir la valeur souhaitée ; Honteusement, cela ne semble pas réussir, et nginx ne recommande pas d'utiliser if
D'accord, je l'ai fait avec if, mais nginx ne recommande pas d'utiliser if. Quelqu'un a-t-il une meilleure solution ?
@冰风 cette personne, il semble que le texte pour te répondre ne puisse pas utiliser le format md, je te répondrai ici :
.
Mes besoins professionnels sont :header1, $httpheader2, $httpheader3, et a une valeur correspondante de a, b, c. nginx doit déterminer la clé de l'en-tête et renvoyer une valeur $route confirmée basée sur la valeur correspondant à la clé.
Exemple commercial :
La $route finale est 111, et fastcgi_pass localhost:111
La $route finale est 212 et fastcgi_pass localhost:212
最终$route为 111, 并 fastcgi_pass localhost:111
最终$route为 212, 并 fastcgi_pass localhost:212
最终$route为 313, 并 fastcgi_pass localhost:313
La $route finale est 313, et fastcgi_pass localhost:313
L'hôte doit comprendre certaines choses : 1. Les instructions de l'instruction map doivent exécuter 1 sur N par défaut.
équivaut à
Donc, la $route sortante finale est 30 ;
map est une instruction pour établir la relation de mappage entre plusieurs valeurs entrantes et valeurs sortantes. Il est préférable que la valeur entrante ait été définie et attribuée avant d'être transmise à la carte, sinon la valeur par défaut sera exécutée directement.
L'affiche originale peut l'essayer