在nginx map
有一个非常有用的指令。
但是可以仅在http
级别使用它(请参阅http://nginx.org/en/docs/http/ngx_http_map_module.html#map中的文档)。
例如我有一个server
定义,我想在这个服务器使用$url
variables使用一些条件redirect。 在server
使用这个指令是非常方便的,但这是不可能的。 为什么?
是的,我也可以在http
层次上完成,但是可能会在http
层次上定义不同的server
,我希望将这些条件保留在定义的server
部分中。
可以使用map
的范围在nginx源代码中是固定的。 以下是来自ngx_http_map_module.c的代码的一部分。 你可以看到map
只能在NGX_HTTP_MAIN_CONF
中使用,这意味着只有http
级别。
static ngx_command_t ngx_http_map_commands[] = { { ngx_string("map"), NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE2, ngx_http_map_block, NGX_HTTP_MAIN_CONF_OFFSET, 0, NULL },