2questions on nginx

2013-07-02 16:06:12 +08:00
 georgetso
1.
在 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, 获得想要的值?

2.
为解决问题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

------
那么, 哪位深藏功与名的同学, 帮忙解答一下?
2322 次点击
所在节点    NGINX
1 条回复
georgetso
2013-07-02 16:30:06 +08:00
好吧, 用if搞定了, 可是nginx不推荐使用if, 哪位同学有更好的方案?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/74489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX