Выставлять connection close

Igor Sysoev is at rambler-co.ru
Fri May 15 18:50:51 MSD 2009


On Fri, May 15, 2009 at 02:48:02PM +0400, Maxim Dounin wrote:

> Hello!
> 
> On Fri, May 15, 2009 at 01:31:28PM +0400, Kirill A. Korinskiy wrote:
> 
> > At Fri, 15 May 2009 09:09:38 +0400,
> > Igor Sysoev <is at rambler-co.ru> wrote:
> > > 
> > > 
> > > Это делается в
> > > 
> > > ngx_http_chunked_header_filter(ngx_http_request_t *r)
> > > {
> > >     ...
> > > 
> > >     if (r->headers_out.content_length_n == -1) {
> > >         if (r->http_version < NGX_HTTP_VERSION_11) {
> > >             r->keepalive = 0;
> > > 
> > >         } else {
> > >             r->chunked = 1;
> > >         }
> > >     }
> > > 
> > > 
> > 
> > как минимум для 204 ответа ставится content_length_n в -1 уже после
> > этого кода.
> 
> RFC2616 как бы говорит нам:
> 
>    1.Any response message which "MUST NOT" include a message-body (such
>      as the 1xx, 204, and 304 responses and any response to a HEAD
>      request) is always terminated by the first empty line after the
>      header fields, regardless of the entity-header fields present in
>      the message.
> 
> > Если помнишь ??? я писал про проблемы wget и 'return 204' ??? они идут
> > именно из-за этого.
> 
> Я верю что wget не умеет http.  Но причём тут nginx?

Скажем так, если какой-нибудь распространённый браузер не умеет http,
то это повод сделать workaround, например, такие workaround'ы есть для MSIE.
Но распространённой ситуации, когда wget'ом забирают 204 ответы, я себе
представить не могу. А для специфичного случая вполне можно обойтись
конфигурацией:

   location ... {
       return 204;
       keepalive_timeout 0;
   }


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list