Добрый день! как-то уже писал на эту тему. дошли руки, выкатил патч в продакшен. идея в том, что отправка заголовка "Connection: keep-alive" в большинстве случаев не нужна.
абонентская база - сотни тысяч пользователей, сотни миллионов запросов в месяц. думаю, спустя месяц-два можно будет считать, что все протестировано во всех возможных ситуациях. желающие - приглашаются к тестированию. данное поведение "подсмотрено" у IIS, который по любым метрикам занимает десятки процентов "рынка": http://news.netcraft.com/archives/2013/12/06/december-2013-web-server-survey.html - поэтому есть уверенность, что все обойдется без побочных эффектов diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c index 707a813..759186f 100644 --- a/src/http/ngx_http_header_filter_module.c +++ b/src/http/ngx_http_header_filter_module.c @@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_t *r) len += sizeof("Connection: upgrade" CRLF) - 1; } else if (r->keepalive) { + + if ((r->http_version == NGX_HTTP_VERSION_10) || (clcf->keepalive_header)) { len += sizeof("Connection: keep-alive" CRLF) - 1; + } /* * MSIE and Opera ignore the "Keep-Alive: timeout=<N>" header. @@ -556,8 +559,10 @@ ngx_http_header_filter(ngx_http_request_t *r) sizeof("Connection: upgrade" CRLF) - 1); } else if (r->keepalive) { - b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF, + if ((r->http_version == NGX_HTTP_VERSION_10) || (clcf->keepalive_header)) { + b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF, sizeof("Connection: keep-alive" CRLF) - 1); + } if (clcf->keepalive_header) { b->last = ngx_sprintf(b->last, "Keep-Alive: timeout=%T" CRLF, _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
