Can I modify headers_out's "location" in body filter?

Hi all,
I’m a newbie in nginx module development. I’ve a question here, need
your help.
I’m trying to develop a filter, which works with memcached, is used for
request routing.
for example, the conf here:

location /test {
            my_rr on;
            set $memcached_key      $arg_key;
            memcached_pass  127.0.0.1:11211;
            default_type    text/html;
}

ps: my_rr enables my filter.
In my filter module, I’ve modify headers_out.status = 302 in my header
filter, and I want to modify “Location” in my body filter, because the
value of “Location” depends on the response of memcached.

I do modify headers_out.location in my body filter, but it doesn’s work.

Could anybody tell me if I miss something?

Great thanks!

Posted at Nginx Forum:

ckong at 2010-6-17 16:27 wrote:

        memcached_pass  127.0.0.1:11211;

No,your modification is useless. Nginx sends the headers first, even
before receiving all the response body from backends.

[email protected]
nginx Info Page


Weibin Y.

Thanks, Yao.
Is there a way to postpone the header’s sending?
btw: So content-lenght should be known before Nginx invokes the body
filter, right?

Posted at Nginx Forum: