the keepalive problem when using redirection in code
Maxim Dounin
mdounin at mdounin.ru
Thu Oct 22 14:03:20 MSD 2009
Hello!
On Thu, Oct 22, 2009 at 05:30:47AM -0400, wangbin579 wrote:
> the code is as the following:
> header->hash = 1;
> header->key.len = sizeof("Location") - 1;
> header->key.data=(u_char *) "Location";
> header->value.len = strlen(param->redirectUrl);
> header->value.data=(u_char*)param->redirectUrl;
> r->header_only=1;
> r->headers_out.content_length_n=0;
> r->headers_out.content_type.len = sizeof("text/html") - 1;
> r->headers_out.content_type.data = (u_char *) "text/html";
> r->headers_out.status = NGX_HTTP_OK;
>
> return NGX_HTTP_MOVED_TEMPORARILY;
>
> when using keepalive (65s),the http responce will return in more than 65s .
>
> I use two methods
> 1. if I send some contents back(so r->header_only=0),the phenomena is gone,the http responce return normally.
> 2. If I set r->keepalive=0,the phenomena is also gone,the http responce return normally.
>
> Are the above methods right?
No, the above code breaks http standard as it returns response
without message body with 302 code to arbitrary requests. And
this is why it breaks keepalive connections.
Consult RFC 2616 for details.
Maxim Dounin
More information about the nginx
mailing list