Streaming request

Hi,

I’m trying to do a streaming request that uses chunked encoding that
gets
forwarded to a back-end node.js http server. In this case the client
does
not end the request before it gets a response header from the server.
This works well if using node.js standalone, but when fronted by Nginx,
nginx does not forward the request to my node process and a minute later
returns a 408 to the client.

I’m using nginx 1.5.0 with the following configuration:

upstream myservername {
server 127.0.0.1:8888;
}

server {
listen 80;
listen 443 ssl;

server_name myservername;

ssl_certificate …
ssl_certificate_key …

location / {
proxy_buffering off;
proxy_http_version 1.1;

proxy_pass http://myservername;

}
}

Any clues on how to solve this?

TIA!


Pedro

Posted at Nginx Forum:

Hello!

On Tue, May 21, 2013 at 08:28:19AM -0400, pgte wrote:

Hi,

I’m trying to do a streaming request that uses chunked encoding that gets
forwarded to a back-end node.js http server. In this case the client does
not end the request before it gets a response header from the server.
This works well if using node.js standalone, but when fronted by Nginx,
nginx does not forward the request to my node process and a minute later
returns a 408 to the client.

This doesn’t work as nginx insists on reading a request body
before the request is passed to a backend server.

You may consider switching a protocol to something like WebSocket.
See here for instructions how to proxy WebSocket connections
though nginx:

http://nginx.org/en/docs/http/websocket.html


Maxim D.
http://nginx.org/en/donation.html

On Tue, May 21, 2013 at 05:33:29PM +0400, Maxim D. wrote:

nginx does not forward the request to my node process and a minute later
returns a 408 to the client.

This doesn’t work as nginx insists on reading a request body
before the request is passed to a backend server.

People are asking for “no buffer” feature very often,
it’s clearly something nginx is missing and should have.

I know Weibin has been working on a patch to do exactly that
(“no_buffer” patch).
Currently it’s available and stable for nginx 1.2.x,
but the 1.4 version is still work-in-progress.

– Pasi