#897 closed defect (invalid)
$pipe variable never set
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.9.x |
Keywords: | pipe | Cc: | |
uname -a: | FreeBSD 10.2-RELEASE FreeBSD 10.2-RELEASE #0 r286666: Wed Aug 12 15:26:37 UTC 2015 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 | ||
nginx -V: |
nginx version: nginx/1.9.11
built with LibreSSL 2.1.9 TLS SNI support enabled configure arguments: --prefix=/usr/local/etc/nginx --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx/access.log --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_v2_module --with-http_sub_module --add-module=../ngx_cache_purge --with-http_image_filter_module --with-http_gunzip_module --with-file-aio --with-ipv6 --with-openssl=../libressl-2.1.9 --with-pcre --with-pcre-jit --with-threads --with-google_perftools_module --with-zlib=../zlib/ --with-zlib-asm=pentium4 --with-cc-opt=' -Wno-error -Ofast -funroll-loops -march=native' --with-zlib-opt=-march=native |
Description
The $pipe variable, documented at http://nginx.org/en/docs/http/ngx_http_core_module.html#variables is never being set to anything other than "."
According to the documentation:
“p” if request was pipelined, “.” otherwise (1.3.12, 1.2.7)
As I understand it, HTTP 1.1 requests with keepalive, HTTP 1.0 requets with manual "Connection: keep-alive", and HTTP 2.0 connections with h2 idle support enabled should all result in requests with $pipe = p
However, for all three of these cases when logging $pipe in access_log, the result is always "."
Note:
See TracTickets
for help on using tickets.
The $pipe variable works as expected (
return 200 $pipe
is used in the configuration):Note that pipelining and keepalive are different things. Quoting RFC2616:
While pipelining requires keepalive, the use of keepalive doesn't mean that pipelining is used too. Moreover, clients usually use keepalive, but do not use pipelining due to various interoperability problems.
In HTTP/2 pipelining is not present at all. It instead uses stream multiplexing which allows to achieve similar goals.
More details about pipelining can be found in RFC2616.