Rewrite handling order

Maxim Dounin mdounin at mdounin.ru
Tue Jan 14 11:11:21 UTC 2014


Hello!

On Tue, Jan 14, 2014 at 04:15:32PM +0530, Fasih wrote:

> Hi
> 
> I have a custom plugin that handles rewrite (NGX_HTTP_REWRITE_PHASE). There
> is another plugin compiled before my plugin that also handles rewrite
> (HttpLuaModule). I was expecting to see that my module would rewrite after
> lua is done, however that is not the case. Some debugging showed that
> whereas my module pushed into the
> cmcf->phases[NGX_HTTP_REWRITE_PHASE].handlers after lua, the
> cmcf.phase_engine.handlers had lua *after* my module. The culprit seems to
> be the following:
> 
> static ngx_int_t
> ngx_http_init_phase_handlers(ngx_conf_t *cf, ngx_http_core_main_conf_t
> *cmcf)
> {
> ..
>         ph = cmcf->phase_engine.handlers;
> ..
>         n += cmcf->phases[i].handlers.nelts;
> 
>         for (j = cmcf->phases[i].handlers.nelts - 1; j >=0; j--) {
>             ph->checker = checker;
>             ph->handler = h[j];
>             ph->next = n;
>             ph++;
>         }
> }
> 
> The order is inverted here (h[j] before h[j-1]). Is this intentional or a
> bug?

It's intentional.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx-devel mailing list