Я думаю, что на самом деле речь идет о том, каким разработчик создал модуль, и каким он может быть на самом деле.
Я заглянул под капот исходного кода и предложил бы то же самое для большей ясности. Также я использовал следующее руководство, чтобы понять, что означает этот код: https://www.evanmiller.org/nginx-modules-guide.html
Исходный код для ngx_http_map_module
находится здесь .
Если я посмотрю на 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 },
- Первый параметр просто определяет строку директивы
- Второй параметр интересен. Это поле
type
, которое:
type — это набор флагов, указывающих, где директива допустима и сколько аргументов принимает директива.
Здесь мы видим, что определены поля NGX_HTTP_MAIN_CONF
, что делает директиву действительной на уровне http. Но мы не видим соответствующих флагов NGX_HTTP_SRV_CONF
- для server
или NGX_HTTP_LOC_CONF
для location
уровней.
Поэтому имеет смысл, что эта конкретная реализация ngx_http_map_module
работает только на уровне http.
Теперь, может ли это работать на уровне сервера/локации? Теоретически должно. Но для этого потребуется некоторый вклад в исходный код. Если вы считаете, что это будет полезная функция, пожалуйста, внесите свой вклад :)
person
Manish Dash
schedule
08.01.2021