Ответ 1
Я думаю, что если вы используете map для редиректов - это не очень хорошо в конфигах nginx. Может, переписывает, решит ли ты проблему? Smt. как https://www.nginx.com/blog/creating-nginx-rewrite-rules/
В nginx map
есть очень полезная директива.
Но его можно использовать только на уровне http
(см. здесь http://nginx.org/en/docs/http/ngx_http_map_module.html#map).
Например, у меня есть server
, и я хотел бы использовать некоторые условные переадресации на этом сервере с помощью переменной $url
. Было бы очень удобно использовать эту директиву внутри server
, но это невозможно. Почему?
Да, я могу это сделать и на уровне http
, но на уровне http
могут быть разные server
, и я хотел бы сохранить эти условия в разделе server
, для которого они определены.
Я думаю, что если вы используете map для редиректов - это не очень хорошо в конфигах nginx. Может, переписывает, решит ли ты проблему? Smt. как https://www.nginx.com/blog/creating-nginx-rewrite-rules/
Область использования 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 },