I am running nginx/1.1.19:
# nginx -V
nginx version: nginx/1.1.19
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-auth-pam --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-echo --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-upstream-fair --add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-dav-ext-module
I am using it to reverse proxy a service that can stream data as a chunked response. Each chunk from the backend service is a valid JSON document, but when accessed through the nginx proxy, the chunks are repackaged into 'round' sizes, like 0x1000, 0x2000, 0x4000, etc. This makes the chunks no longer valid JSON blobs, since each chunk will have the end of one document at the beginning, and the beginning of another document at the end.
My location
block is configured like so:
location / {
proxy_pass http://backend;
proxy_read_timeout 600;
proxy_buffering off;
}
I thought that the proxy_buffering off;
part should avoid the behavior I am seeing. Is there some other setting I need to change?