You should use  HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES <font face="'courier new', monospace">ngx_http_corley_filter_module</font>" <span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Microsoft YaHei'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: nowrap; widows: 2; word-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">rather than</span>  <font face="'courier new', monospace">HTTP_MODULES="$HTTP_MODULES ngx_http_corley_filter_module"</font><br>

<br><div class="gmail_quote">On Sun, Oct 9, 2011 at 5:42 AM, Walter Dal Mut <span dir="ltr"><<a href="mailto:info@walterdalmut.com">info@walterdalmut.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div>Hi everybody I am new to nginx and actually I am interested on nginx extensions.</div><div><br></div><div>I need to write a new module for nginx and compile a version with this module. I don't want to write down an handler but a filter, I need to work on headers.</div>



<div><br></div><div>For that reason I start my module using gzip as a base and cut different part that I don't want use.</div><div><br></div><div>I compile nginx with my module and all works fine. After that I start the server with my personal configuration (corley on;) in the main conf file and the server start correctly. The problem is that my module seems never used. The filter functionality is pretty simple, I want to force text/plain header.</div>



<div><br></div><div>I don't understand why my module is never called. Any one can help me?</div><div><br></div><div>The main filename is: <i>ngx_http_corley_filter_module.c</i></div><div>The configuration filename is:<i> config</i></div>



<div><i><br></i></div><div>The config content:</div><div><i><br></i></div><div><div><font face="'courier new', monospace">ngx_addon_name=ngx_http_corley_filter_module</font></div><div><font face="'courier new', monospace">HTTP_MODULES="$HTTP_MODULES ngx_http_corley_filter_module"</font></div>



<div><font face="'courier new', monospace">NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_corley_filter_module.c"</font></div><div style="font-style:italic"><br></div>

</div><div><br></div><div>The ngx_http_corley_filter_module.c content:</div><div><br></div><div><span style="color:rgb(34, 34, 34);font-size:13px;background-color:rgb(255, 255, 255)"><font face="'courier new', monospace">#include <ngx_config.h><br>



#include <ngx_core.h><br>#include <ngx_http.h><br><br>typedef struct {<br>   ngx_flag_t           enable;<br>} ngx_http_corley_conf_t;<br><br>static ngx_int_t ngx_http_corley_filter_init(ngx_conf_t *cf);<br>static void * ngx_http_corley_create_conf(ngx_conf_t *cf);<br>



static char * ngx_http_corley_merge_conf(ngx_conf_t *cf, void *parent, void *child);<br>static void * ngx_http_corley_create_conf(ngx_conf_t *cf);<br><br>static ngx_command_t  ngx_http_corley_filter_commands[] = {<br><br>



   { ngx_string("corley"),<br>     NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_FLAG,<br>     ngx_conf_set_flag_slot,<br>     NGX_HTTP_LOC_CONF_OFFSET,<br>     offsetof(ngx_http_corley_conf_t, enable),<br>



     NULL },<br><br>     ngx_null_command<br>};<br><br><br>static ngx_http_module_t  ngx_http_corley_filter_module_ctx = {<br>   NULL,                                  /* preconfiguration */<br>   ngx_http_corley_filter_init,           /* postconfiguration */<br>



   NULL,                                  /* create main configuration */<br>   NULL,                                  /* init main configuration */<br>   NULL,                                  /* create server configuration */<br>



   NULL,                                  /* merge server configuration */<br>   ngx_http_corley_create_conf,           /* create location configuration */<br>   ngx_http_corley_merge_conf             /* merge location configuration */<br>



};<br><br><br>ngx_module_t  ngx_http_corley_filter_module = {<br>   NGX_MODULE_V1,<br>   &ngx_http_corley_filter_module_ctx,      /* module context */<br>   ngx_http_corley_filter_commands,         /* module directives */<br>



   NGX_HTTP_MODULE,                       /* module type */<br>   NULL,                                  /* init master */<br>   NULL,                                  /* init module */<br>   NULL,                                  /* init process */<br>



   NULL,                                  /* init thread */<br>   NULL,                                  /* exit thread */<br>   NULL,                                  /* exit process */<br>   NULL,                                  /* exit master */<br>



   NGX_MODULE_V1_PADDING<br>};<br><br><br>static ngx_http_output_header_filter_pt  ngx_http_next_header_filter;<br>static ngx_http_output_body_filter_pt    ngx_http_next_body_filter;<br><br><br><b>static ngx_int_t<br>ngx_http_corley_header_filter(ngx_http_request_t *r)<br>



{<br>   ngx_http_corley_conf_t  *conf;<br>   conf = ngx_http_get_module_loc_conf(r, ngx_http_corley_filter_module);<br><br>   ngx_table_elt_t       *h;<br><br>   h = ngx_list_push(&r->headers_out.headers);<br>   if (h == NULL) {<br>



       return NGX_ERROR;<br>   }<br><br>   h->hash = 1;<br>   ngx_str_set(&h->key, "Content-Encoding");<br>   ngx_str_set(&h->value, "text/plain");<br><br>   r->headers_out.content_encoding = h;<br>



<br>   r->main_filter_need_in_memory = 1;<br><br>   ngx_http_clear_content_length(r);<br>   ngx_http_clear_accept_ranges(r);<br><br><br>   return ngx_http_next_header_filter(r);<br>}<br></b><br><br>static ngx_int_t<br>



ngx_http_corley_body_filter(ngx_http_request_t *r, ngx_chain_t *in)<br>{<br>   ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,<br>             "not well formed XML document");<br>   return ngx_http_next_body_filter(r, in);<br>



}<br><br>static void *<br>ngx_http_corley_create_conf(ngx_conf_t *cf)<br>{<br>   ngx_http_corley_conf_t  *conf;<br><br>   conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_corley_conf_t));<br>   if (conf == NULL) {<br>       return NULL;<br>



   }<br><br>   /*<br>    * set by ngx_pcalloc():<br>    *<br>    *     conf->bufs.num = 0;<br>    *     conf->types = { NULL };<br>    *     conf->types_keys = NULL;<br>    */<br><br>   conf->enable = NGX_CONF_UNSET;<br>



<br>   return conf;<br>}<br><br><br>static char *<br>ngx_http_corley_merge_conf(ngx_conf_t *cf, void *parent, void *child)<br>{<br>   ngx_http_corley_conf_t *prev = parent;<br>   ngx_http_corley_conf_t *conf = child;<br>


<br>
   ngx_conf_merge_value(conf->enable, prev->enable, 0);<br><br>   return NGX_CONF_OK;<br>}<br><br>static ngx_int_t<br>ngx_http_corley_filter_init(ngx_conf_t *cf)<br>{<br>   ngx_http_next_header_filter = ngx_http_top_header_filter;<br>



   ngx_http_top_header_filter = ngx_http_corley_header_filter;<br><br>   ngx_http_next_body_filter = ngx_http_top_body_filter;<br>   ngx_http_top_body_filter = ngx_http_corley_body_filter;<br><br>   return NGX_OK;<br>}</font></span></div>



<div><br></div>Thanks to all.<br clear="all"><font color="#888888">Walter<br>
</font><br>_______________________________________________<br>
nginx-devel mailing list<br>
<a href="mailto:nginx-devel@nginx.org">nginx-devel@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-devel" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-devel</a><br></blockquote></div><br><br clear="all"><br>-- <br>douban:<a href="http://www.douban.com/people/mustang/" target="_blank">www.douban.com/people/mustang/</a><br>

<br>blog: <a href="http://www.pagefault.info" target="_blank">www.pagefault.info</a><br><br>twitter: <a href="http://www.twitter.com/minibobo" target="_blank">www.twitter.com/minibobo</a><br><br>weibo:  <a href="http://www.weibo.com/diaoliang" target="_blank">www.weibo.com/diaoliang</a><br>

<br>