那么nginx总是为每个请求遍历同一组过滤器?

时间:2011-06-17 03:59:54

标签: filter nginx

&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_ssi_filter_module,
&ngx_http_charset_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,

我知道nginx模块被编译成nginx二进制文件,而不是动态链接。

这是否意味着无论如何,所有上述13个过滤器都会在每个请求上执行?

1 个答案:

答案 0 :(得分:0)

是。那是真实的。例如,以下是gzip模块的init函数。但是不要太担心,因为大多数过滤器会在不适用的情况下提前纾困。

static ngx_int_t ngx_http_gzip_filter_init(ngx_conf_t *cf)
{
    ngx_http_next_header_filter = ngx_http_top_header_filter;
    ngx_http_top_header_filter = ngx_http_gzip_header_filter;

    ngx_http_next_body_filter = ngx_http_top_body_filter;
    ngx_http_top_body_filter = ngx_http_gzip_body_filter;

    return NGX_OK;
}