Upcoming SPDY support details

Valentin V. Bartenev ne at vbart.ru
Thu May 17 11:23:55 UTC 2012


On Thursday 17 May 2012 13:43:29 Alek Storm wrote:
> Hi all,
> 
> I'm developing SPDY (draft 2) support for Tornado, a Python web framework
> that often uses nginx as a reverse proxy. AFAICT, nginx will roll out its
> own SPDY support in 1.3, to be released at the end of May or in early June.
> I'd like Tornado to complement nginx's design, but I can't find any details
> of its SPDY implementation online or in svn, so I'll ask a few questions
> here.
> 
> 1. To avoid the significant overhead of an SSL connection, nginx
> communicates with the server behind the reverse proxy on unencrypted HTTP.
> However, whether to use HTTP or SPDY framing is normally decided via NPN
> negotiation during the SSL handshake. Since the backend server can't
> distinguish between a forwarded HTTP or SPDY connection without the SSL
> layer, will there be a mechanism for delegating HTTP connections to one
> address/port, and SPDY to another? Alternately, will nginx serve as an
> HTTP<=>SPDY gateway, so that all requests appear to be SPDY to the backend
> server?

First implementation of SPDY support will work only on frontend side. So, nginx 
will be able to talk with backends by HTTP, FastCGI, uwsgi, or SCGI protocols.

Also, we will add a variable in nginx configuration, that will indicate client 
connection by spdy protocol in case if someone wants to write it in the log or 
notify the application by sending special header.

> 2. Will there be any way to take advantage of nginx's caching when pushing
> static resources that would normally be served by it? For example, the
> backend server could send a SYN_STREAM frame with the UNIDIRECTIONAL flag
> set and only the "url" header included - if the URL points to a location
> that nginx would serve, nginx takes over, filling in the rest of the
> headers and serving the file's contents.
> 

First implementation will have no support of SPDY server push. I believe that 
the next step is to add pushing by special response header from backend (like
"X-Accel-Redirect" but with the list of URIs to push).

 wbr, Valentin V. Bartenev



More information about the nginx-devel mailing list