Прописал HTTP_AUX_FILTER_MODULES.
Есть вопрос насчет буферов:
static ngx_int_t ngx_http_my_body_filter ( ngx_http_request_t* r,
ngx_chain_t* in )
Если смотреть in->buf, то pos = last = start = end = NULL,
но инициализирован file и in_file = 1, тогда как в ngx_http_chunked_module
можно прочитать буфер сразу из pos. Поскольку основа фильтра взята от
chunked
модуля, то предполагаю, что это зависит от порядка модулей в цепочке?
&ngx_http_write_filter_module,
&ngx_http_header_filter_module,
&ngx_http_chunked_filter_module, <=
&ngx_http_range_header_filter_module,
&ngx_http_gzip_filter_module,
&ngx_http_postpone_filter_module,
&ngx_http_charset_filter_module,
&ngx_http_ssi_filter_module,
&ngx_http_userid_filter_module,
&ngx_http_headers_filter_module,
&ngx_http_my_filter_module, <=
&ngx_http_copy_filter_module,
&ngx_http_range_body_filter_module,
&ngx_http_not_modified_filter_module,
----- Original Message -----
From: "Igor Sysoev" <is@xxxxxxxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
Cc: "Evan Miller" <emmiller+gmane@xxxxxxxxx>
Sent: Thursday, June 07, 2007 10:36 AM
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_my_module.c"
Denis Erygin wrote:
>Добрый день.
>
>Если следовать рекомендациям из статьи
>http://www.riceonfire.org/emiller/nginx-modules-guide.html
>при написании filter модуля, то он вставляется в начало списка filter
>модулей,
>что приводит к его игнорированию, из-за перезаписи
>ngx_http_top_body_filter
>в ngx_http_write_filter_module, который считает себя началом цепочки
>фильтров.
>
>*[src/http/ngx_http_write_filter_module.c]*
>
>static ngx_int_t
>ngx_http_write_filter_init(ngx_conf_t *cf)
>{
> ngx_http_top_body_filter = ngx_http_write_filter;
>
> return NGX_OK;
>}
>
>*[objs/ngx_modules.c]*
>
>ngx_module_t *ngx_modules[] = {
>.....
>&ngx_http_addon_filter_module, <= вставка в начало списка!
>&ngx_http_write_filter_module,
>&ngx_http_header_filter_module,
>&ngx_http_chunked_filter_module,
>&ngx_http_range_header_filter_module,
>&ngx_http_gzip_filter_module,
>&ngx_http_postpone_filter_module,
>&ngx_http_charset_filter_module,
>&ngx_http_ssi_filter_module,
>&ngx_http_userid_filter_module,
>&ngx_http_headers_filter_module,
>&ngx_http_copy_filter_module,
>&ngx_http_range_body_filter_module,
>&ngx_http_not_modified_filter_module,
> <= правильное место
>для вставки
>NULL
>};