在 http {} 部分, 设置了
map $http_header_1 $route {default 10;}
map $http_header_2 $route {default 20;}
map $http_header_3 $route {default 30;}
请求的header设置为
curl -H "header_1:0" http://xxx.com/xxx
然后在 server {} 部分,
echo "$route";
打印结果始终为 30, 因为 第三个map指令覆盖了前面的值;
问题来了: 如何在map部分根据不同的header, 获得想要的值?
为解决问题1, 我想的办法为
map $http_header_1 $route1 {default 10;}
map $http_header_2 $route2 {default 20;}
map $http_header_3 $route3 {default 30;}
然后在 location {} 部分, 用
if ($http_header_1) {
echo "$route1";
}
去获得想要的值; 可耻的是, 这个 if 似乎没成功, 而且nginx不推荐使用if
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
认证0级讲师