Я пишу модуль nginx.Из других примеров я регистрирую свой фильтр заголовков в хуке постконфигурации модулей:
static ngx_int_t
mod_py_postconfig(ngx_conf_t *cf)
{
ngx_http_next_header_filter = ngx_http_top_header_filter;
ngx_http_top_header_filter = mod_py_headers_filter;
return NGX_OK;
}
Но обработчик никогда не вызывается.Я установил точку останова в gdb для изменения ngx_http_top_header_filter, и кажется, что сначала вызывается postconfig моего модуля, но затем запускается postconfig ngx_http_write_filter_module, который переопределяет ngx_http_top_header_filter * * * 100 * 100 * * * 100 * 100 * * * * * * * * 100 * 100 * * * * * * * * * * * 100 * 100 * * * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * 100 * 100 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 * * '* * * * * * * 100 * 100 * * * * * * * * 100 * 100 * * * * * * * * 100 * 100 * * * * * * * * 100 * 100 * * * * * * * * * * * * * * * * * * * * * * * *' 100 ''как будто он предназначен для самого последнего вызова, так почему же постконфигурация моего модуля называется первой?
Из того, что я вижу, порядок модулей установлен в objs / ngx_modules.c
Я смог решить проблему, переставив там модули вручную, так что мой модуль появился после ngx_http_header_filter_module, но это выглядит как уродливый хак, а также затрудняет автоматизацию процесса сборки, так как ./configure каждый раз перезаписывает этот файл.1011 *