Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
патч для отключения заголовков "Connection: keep-alive" (еще раз)
- To: "nginx-ru@xxxxxxxxx" <nginx-ru@xxxxxxxxx>
- Subject: патч для отключения заголовков "Connection: keep-alive" (еще раз)
- From: Илья Шипицин <chipitsine@xxxxxxxxx>
- Date: Tue, 10 Dec 2013 09:13:16 +0600
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=XQXzD+8ZwI6bsKNuGQdyt89r/A883K9dBEolGibZOkg=; b=oISAYI2IUIgYgRTgppNvikyxSTyMVGQbKCtSatbgmIUyRgJLdeNe7rANX5jTI49/3I f+2lzj2FE8rxCrAGhyUpsF73+sNujha0udksDS8k41FzQLfr7+bFPPIwQseJmEAucPBI AYZqXIFA9OZvoSxfE21rMj9odMsfk2mBm/kDn+s/5gCQbf7D9rDDhfZXYSVNx5EtqD6c Jv8u34HetRXcwSCyWiSXjY5FBbbzjQY0OP52IL5LPrGPCAccA/rKEQKkqRr+nQDQYHz6 t+bvavoKKtB9c28Po6izYwci+vgID6KSmchqb7W+sT0Ez2DxUIIXYgmUTUO6GKpX3/bs o+Ng==
Добрый день!
как-то уже писал на эту тему. дошли руки, выкатил патч в продакшен.
идея в том, что отправка заголовка "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
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|