Proxy buffering

Andrew Tynefield atynefield at
Fri Nov 15 04:37:03 UTC 2013

Hello all,

I've configured nginx as a load balancing proxy for my backend servers. My
backend is expecting multi-part uploads for large files in small chunks
(5-15mb). The issue I'm encountering, is that I would like for nginx to
just pass the chunked data along to the backend servers and not buffer the

Current configuration:

upstream riak-cs {

server {
        listen 80;
        server_name *;
        location / {
                proxy_pass http://riak-cs;
                proxy_set_header Host $host;
                proxy_connect_timeout 59s;
                proxy_send_timeout   600;
                proxy_read_timeout   600;
                proxy_buffering off;
                proxy_pass_header Server;
                add_header Backend $proxy_host:$proxy_port;
                add_header Upstream-Response-Time $upstream_response_time;



user              nginx;
worker_processes  4;
error_log  /var/log/nginx/error.log;
pid        /var/run/;

events {
    worker_connections  4096;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request"
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay     on;
    keepalive_requests 100;
    client_max_body_size 1000M;
    keepalive_timeout  3;
    reset_timedout_connection on;
    underscores_in_headers on;

    include /etc/nginx/conf.d/*.conf;


I have tried disabling buffers as shown above, however, when I capture the
packets on the backend servers, I see that the stream of data doesn't occur
until after the full body of the upload has completed.

[ jedi ] ~ # nginx -v
nginx version: nginx/1.4.3

If I enabled info error logging, I see:
2013/11/14 22:34:47 [warn] 2698#0: *1 a client request body is buffered to
a temporary file /var/cache/nginx/client_temp/0000000001, client:, server:, request: "PUT
HTTP/1.1", host: ""

How can I prevent this all together?


[Andrew Tynefield]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list