gpt4 book ai didi

http - nginx map 指令 : why is it allowed only on http level?

转载 作者:行者123 更新时间:2023-12-03 23:58:59 25 4
gpt4 key购买 nike

Nginx 中有一个非常有用的指令 map .

但只能在 http 上使用它级别(请参阅此处的文档 http://nginx.org/en/docs/http/ngx_http_map_module.html#map )。

例如,我有一个 server已定义,我想使用 $url 在此服务器中使用一些条件重定向多变的。在 server 中使用这个指令会非常方便但这是不可能的。 为什么?

是的,我也可以在 http 上这样做水平但可能会有不同 server s 在 http 上定义级别,我想将这些条件保留在 server 内它们被定义的部分。

最佳答案

很老的帖子,但我真的想给黑暗带来一些光明。答案本身很简单。
博士;TL NGINX 中的变量始终是全局的,并且一旦定义就可以从配置中的任何地方访问。因此,在 server 中定义 map 没有任何意义。或 location堵塞。 map创建一个新变量,其值取决于第一个参数中指定的一个或多个源变量的值。
示例配置:

map $host $myvar {
example.com "test";
foo.com "for";

}
因为 NGINX 中的变量总是全局的,并且一旦定义就可以在配置中的任何其他地方使用。因此,将 map 移动到某个位置或服务器块没有任何意义。我们 map 的有趣事实指令是当变量 myvar会收到它的值(value)还是什么时候会被分配?
一旦变量将在您的配置中使用,map 就会将值分配给变量
这意味着您可以在 http 上下文中定义 map ,但该值将在您访问时分配 $myvar在您的 nginx 配置中。
回到你的问题:
由于 NGINX 变量始终是全局的,具有 mapserver块是有意义的,因为它们无论如何都是全局的。

关于http - nginx map 指令 : why is it allowed only on http level?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com